我使用Laravel 5.3,EC2和SES发送电子邮件。Amazon SES 403 Forbidden SignatureDoesNotMatch使用Laravel 5.3
配置/ 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)创建root用户密钥/秘密。
3)运行NTPDATE命令。
4)php artisan缓存:清除,配置:清除,查看:清除,转储自动加载
5)我也在.env中使用了sparkpost,并给出了错误403:禁止了。
我仍然看到以下错误:
[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.
完全错误的位置:https://pastebin.com/KSJinB1E
这可能有一些帮助。 http://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html >>您的SMTP用户名和密码与您的AWS访问密钥ID和秘密访问密钥不同。不要尝试使用您的AWS凭证对SMTP端点进行身份验证。 只是想确保你尝试过。 – nightgaunt
是的。这个做完了。我正在使用IAM凭据。请检查SES_KEY和SES_SECRET。这是IAM用户的凭据。 –
你已经提到你运行ntpdate,但不是输出?你确定你没有时钟歪斜吗? ntpstat的输出是什么? – Robo