【发布时间】:2017-10-27 02:10:50
【问题描述】:
我正在使用 Laravel 5.3、EC2 和 SES 发送电子邮件。
配置/mail.php
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
.env 有
MAIL_DRIVER=ses
MAIL_HOST=email-smtp.us-west-2.amazonaws.com
MAIL_PORT=25
MAIL_ENCRYPTION=TLS
SES_KEY='AKIA------DZQ5TYQ'
SES_SECRET=AhN8d----------------ZbBq7TNBmhNnosfYbasg6Q
SES_REGION='us-west-2'
composer.json
"require": {
"aws/aws-sdk-php": "~3.0",
}
EC2 托管在孟买,SES 托管在美国西部。我尝试了以下方法:
1) 创建新的 IAM 用户并使用新的密钥/秘密。
2) 创建根用户密钥/秘密。
3) 运行 NTPDATE 命令。
4) php artisan cache:clear , config:clear, view:clear, dump-autoload
5) 我还在 .env 中使用了 sparkpost,这也给出了错误 403:forbidden。
我仍然看到以下错误:
[2017-05-26 06:02:00] local.ERROR: exception 'Aws\Ses\Exception\SesException' with message 'Error executing "SendRawEmail" on "https://email.us-west-2.amazonaws.com"; AWS HTTP error: Client error: `POST https://email.us-west-2.amazonaws.com` resulted in a `403 Forbidden` response:
<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<Error>
<Type>Sender</Type>
<Code>SignatureDo (truncated...)
SignatureDoesNotMatch (client): The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
【问题讨论】:
-
这可能会有所帮助。 docs.aws.amazon.com/ses/latest/DeveloperGuide/… >> 您的 SMTP 用户名和密码与您的 AWS 访问密钥 ID 和秘密访问密钥不同。不要尝试使用您的 AWS 凭证针对 SMTP 终端节点对您自己进行身份验证。只是想确保你尝试过这个。
-
是的。这个做完了。我正在使用 IAM 凭证。请检查 SES_KEY 和 SES_SECRET。这是 IAM 用户的凭证。
-
您提到您运行了 ntpdate,但没有运行输出?你确定你没有时钟偏差? ntpstat 的输出是什么?
-
嗨@Robo。谢谢回复! $ sudo ntpdate -u ntp.ubuntu.com 5 月 28 日 07:01:54 ntpdate[9904]:调整时间服务器 91.189.89.199 偏移量 0.000914 秒 $ sudo ntpstat 无法与 NTP 守护进程对话。运行了吗?
标签: amazon-web-services laravel-5 amazon-ec2 aws-sdk amazon-ses