首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >亚马逊SES STARTTLS SMTP & ExpressionEngine

亚马逊SES STARTTLS SMTP & ExpressionEngine
EN

Stack Overflow用户
提问于 2013-05-31 09:34:17
回答 2查看 4.2K关注 0票数 1

我试图使用ExpressionEngine中的STARTTLS使用Amazon发送邮件。我遇到了下面的错误。

我不知道为什么它抱怨不能在STARTTLS命令之前发送AUTH登录命令- STARTTLS显然已经发送了。我已经尝试了我所能想到的一切,如果有人能为我指明正确的方向,我将不胜感激。

电子邮件-smtp.amazonaws.com ESMTP SimpleEmailService-376766033

你好:250-电子邮件-smtp.amazonaws.com

250-8 8BITMIME

250个- 10485760号

250-STARTTLS

250-8月普通登录

250 Ok

发送AUTH登录命令失败。错误: 530必须首先发出STARTTLS命令

出发地: 530认证

遇到以下SMTP错误:需要530身份验证

到: 503错误:需要邮件命令

遇到下列SMTP错误: 503错误:需要邮件命令

数据: 503错误:需要邮件命令

遇到下列SMTP错误: 503错误:需要邮件命令

500错误:命令未实现

遇到以下SMTP错误: 500错误:命令未实现

无法使用PHP发送电子邮件。您的服务器可能不会被配置为使用此方法发送邮件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-11 16:28:28

这是个合适的解决办法。

这是两个步骤(如果需要,您可以安全地忽略这些解释),并且不需要编辑任何非配置表达式引擎文件,这样就不会破坏升级路径。

它已经在两个表达式引擎安装上进行了测试(每个版本2.5.3-构建日期: 20120911),并且运行良好。

第2步中的第1步:手动编辑{INSTALLDIR}/expressionengine/config/config.php文件,并在末尾添加以下三行:

代码语言:javascript
复制
/* These email configuration variables are required for Amazon SES */
$config['email_smtp_crypto'] = 'tls'; // TLS protocol
$config['email_newline'] = "\r\n"; // SES hangs with just \n

说明:第一行将默认的电子邮件加密设置为TLS ( SES要求的)。第二行将电子邮件换行符从表达式引擎默认值"\n“更改为符合RFC 822的"\r\n”( SES也需要)。

步骤2的第2步:通过您的EE管理转到"Admin ->电子邮件配置“并设置以下内容:

  • 电子邮件协议: SMTP
  • SMTP服务器地址: tls:// YOUR SMTP Server :YOUR SMTP PORT(极其重要的部分是tls://在地址前面)
  • SMTP用户名:您的SES SMTP用户名
  • SMTP密码:您的SES SMTP密码

说明:一旦您获得了SES 验证的发件人电子邮件地址和,您就获得了对Amazon 的生产访问权限(这两者都需要通过亚马逊的SES管理控制台完成),您可以通过SES管理控制台创建一个具有SMTP凭据的AWS帐户。在此过程中,Amazon将给您您自己的证书。

例如,它应该如下所示(带有古怪的用户名和密码):

  • 示例SMTP服务器地址: tls://email-smtp.us-east-1.amazonaws.com:465
  • 示例SMTP用户名: QSKHFTQMSQAKIAIJ6GFY
  • 示例SMTP密码: PeNqC2be3IAbNyhHddTbujwekIKoQE2dAhwr3FVzObjH

要通过您的EE管理测试这一点,请转到"Tools -> Communicate“并发送一封电子邮件。

票数 4
EN

Stack Overflow用户

发布于 2013-06-03 00:58:34

这是我的解决办法。我还没来得及弄清楚为什么会起作用,但如果你有时间的话,就分享吧。

在EE配置文件中添加以下设置(两个tls设置,因为其中有多个工作示例?):

代码语言:javascript
复制
/* SMTP mail settings
-------------------------------------------------------------------*/
$config['mail_protocol'] = "smtp";
$config['email_smtp_crypto'] = "tls";
$config['smtp_crypto'] = "tls";
$config['smtp_server'] = "AWS-SMTP-ADDRESS";
$config['smtp_username'] = "AWS-SMTP-USERNAME";
$config['smtp_password'] = "AWS-SMTP-PASSWORD";
$config['smtp_port'] = "465";
$config['smtp_timeout'] = 30;
$config['email_crlf'] = "\r\n"; 
$config['email_newline'] = "\r\n";

然后按照本文的思路修改Codeigniter Email.php类:http://ellislab.com/forums/viewthread/158882/

我所做的唯一变化是默认设置$starttls = TRUE。

代码语言:javascript
复制
var $starttls       = TRUE;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16854203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档