我试图发送邮件使用亚马逊SES SMTP与启动在ExpressionEngine.我遇到下面的错误。
我不确定为什么它抱怨它不能在STARTTLS命令之前发送AUTH LOGIN命令-STARTTLS显然已经发送了。我已经尝试了我能想到的一切,如果有人能给我指明正确的方向,我将不胜感激。
220email-smtp.amazonaws.comESMTP SimpleEmail Service-376766033
你好:250电子邮件smtp。亚马逊。通用域名格式
250-8比特
250号10485760
250-STARTTLS
250-AUTH普通登录
250行
无法发送AUTH LOGIN命令。错误:530必须首先发出STARTTLS命令
发件人:530需要身份验证
遇到以下SMTP错误:需要530身份验证
收件人:503错误:需要邮件命令
遇到以下SMTP错误:503错误:需要邮件命令
数据:503错误:需要邮件命令
遇到以下SMTP错误:503错误:需要邮件命令
500错误:命令未实现
遇到以下SMTP错误:500错误:未执行命令
无法使用PHP SMTP发送电子邮件。您的服务器可能未配置为使用此方法发送邮件。
这里有一个合适的解决方案。
这是两个步骤(如果您愿意,您可以安全地忽略这些解释),并且不涉及编辑任何非配置表达式引擎文件,因此您不会中断升级路径。
它已经在两个Expression Engine安装(每个版本都是v2.5.3-构建日期:20120911)上进行了测试,并且运行良好。
步骤1(共2步):手动编辑{INSTALLDIR}/表达式引擎/配置/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管理员转到“管理员”-
说明:一旦您有一个SES验证的发件人电子邮件地址,并且您已被授予对亚马逊SES的生产访问权限(这两者都需要通过亚马逊的SES管理控制台完成),您可以通过SES管理控制台创建一个具有SMTP凭据的AWS帐户。这样做,亚马逊SES将给你自己的凭据。
例如,它应该是这样的(带有古怪的用户名和密码):
要通过您的EE管理员进行测试,请访问“工具-
这是我的解决办法。我还没来得及想一想我们为什么这么做,但如果你有时间,一定要和我分享。
在您的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电子邮件。php类,按照本文的思路:http://ellislab.com/forums/viewthread/158882/
我做的唯一变化是默认设置$starttls=TRUE。
var $starttls = TRUE;