我试图使用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发送电子邮件。您的服务器可能不会被配置为使用此方法发送邮件。
发布于 2013-08-11 16:28:28
这是个合适的解决办法。
这是两个步骤(如果需要,您可以安全地忽略这些解释),并且不需要编辑任何非配置表达式引擎文件,这样就不会破坏升级路径。
它已经在两个表达式引擎安装上进行了测试(每个版本2.5.3-构建日期: 20120911),并且运行良好。
第2步中的第1步:手动编辑{INSTALLDIR}/expressionengine/config/config.php文件,并在末尾添加以下三行:
/* 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 ->电子邮件配置“并设置以下内容:
说明:一旦您获得了SES 验证的发件人电子邮件地址和,您就获得了对Amazon 的生产访问权限(这两者都需要通过亚马逊的SES管理控制台完成),您可以通过SES管理控制台创建一个具有SMTP凭据的AWS帐户。在此过程中,Amazon将给您您自己的证书。
例如,它应该如下所示(带有古怪的用户名和密码):
要通过您的EE管理测试这一点,请转到"Tools -> Communicate“并发送一封电子邮件。
发布于 2013-06-03 00:58:34
这是我的解决办法。我还没来得及弄清楚为什么会起作用,但如果你有时间的话,就分享吧。
在EE配置文件中添加以下设置(两个tls设置,因为其中有多个工作示例?):
/* 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。
var $starttls = TRUE;https://stackoverflow.com/questions/16854203
复制相似问题