我用CakePHP 2.10.18编写了一个脚本(运行在php 5.6上,我知道,老东西)。脚本被设置为使用AWS SES作为SMTP服务器,大多数时候都能正常工作,但偶尔,* 根本不更改代码 *,发送会失败,并提供以下错误消息:SMTP服务器不接受密码。
下面是CakePHP中的电子邮件配置:
public $SMTP_config = array(
'transport' => 'Smtp',
'host' => 'email-smtp.us-east-1.amazonaws.com',
'port' => 587,
'timeout' => 30,
'username' => 'redacted',
'password' => 'redacted',
'client' => null,
'log' => true,
'returnPath' => 'my@email.com',
'replyTo' => 'my@email.com',
'tls' => true,
'charset' => 'utf-8',
'headerCharset' => 'utf-8'
);
用作发件人的电子邮件地址(与返回路径和回复路径相同)已通过AWS验证,AWS控制台中的一切看起来都很好,DKIM验证正常,帐户处于健康状态...
我似乎找不到造成这个问题的原因,有什么想法吗?为什么密码会被拒绝,然后在我再次运行脚本的几秒钟后又被接受?任何帮助都将不胜感激。
2条答案
按热度按时间hs1rzwqc1#
我也遇到过类似的问题,我发现问题出在我使用的是一个老的SES用户。当我从命令行运行一些测试来测试SES连接时,它通常工作正常,但偶尔会出现(随机)我会得到下图所示的错误。我创建了一个新的SMTP用户来连接SES,问题就消失了。也许我是天真的,但似乎有人在AWS认为,一个很好的方式来反对一个功能将是使它造成间歇性故障随机。
error message
k2arahey2#
我也面临着同样的问题。
AWS支持向我们报告了以下解决方案(非常简单,尽管我找不到任何关于这件事的文档)。
我刚刚查看了我们的日志(更新凭据变量后3天),问题已经消失。
希望这对你有用。
...
在2019年1月10日之前创建的任何SMTP凭据都将使用Sigv 2(签名版本2),而在此之后创建的凭据将默认使用SigV 4(签名版本4)。
签名版本2已被弃用,取而代之的是签名版本4。如果您在使用上述用户凭据时,在PHP应用程序中收到“SMTP服务器未接受密码。”错误,我建议您创建一组新的凭据,以确保使用Sigv 4身份验证。要创建新的SMTP凭据:
1.登录到AWS管理控制台,并确保设置验证身份的区域(us-east-1)
2.打开位于https://console.aws.amazon.com/ses/的Amazon SES控制台。
3.在左侧导航窗格中选择SMTP设置-这将打开简单邮件传输协议(SMTP)设置页面。
4.选择“创建SMTP凭据”-IAM控制台将打开。
5.对于建立SMTP使用者,请在IAM使用者名称字段中输入SMTP使用者的名称。或者,您可以使用此字段中提供的预设值。完成后,请选择右下角的建立。
6.展开显示用户SMTP安全凭据-您的SMTP凭据将显示在屏幕上。
7.通过选择“下载凭据”下载这些凭据,或者复制凭据并将其存储在安全的位置,因为关闭此对话框后将无法查看或保存凭据。