在我的本地计算机上,邮件按照SES官方文档的建议设置,并且像魅力一样工作。该应用程序在我的EC2部署中也完全相同。邮件部分除外。每当我在我的制作应用程序上发送电子邮件时,我都会收到以下错误:
错误1/2
ClientException in RequestException.php line 107:
Client error: `POST https://email.eu-west-1.amazonaws.com` resulted in a `403 Forbidden` response:
<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<Error>
<Type>Sender</Type>
<Code>InvalidClie (truncated...)
和2/2
SesException in WrappedHttpHandler.php line 192:
Error executing "SendRawEmail" on "https://email.eu-west-1.amazonaws.com"; AWS HTTP error: Client error: `POST https://email.eu-west-1.amazonaws.com` resulted in a `403 Forbidden` response:
<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<Error>
<Type>Sender</Type>
<Code>InvalidClie (truncated...)
InvalidClientTokenId (client): The security token included in the request is invalid. - <ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<Error>
<Type>Sender</Type>
<Code>InvalidClientTokenId</Code>
<Message>The security token included in the request is invalid.</Message>
</Error>
<RequestId>0a137c9c-5fd9-11e6-a886-973129052803</RequestId>
</ErrorResponse>
我的生产的.env
文件已设置,数据库链接到我的EC2。它适用于应用程序的所有其他方面。 Composer随所有依赖项更新一起更新。我使用SMTP通过SES将邮件发送到经过验证的域。我的EC2上的IAM角色是创建Amazon Linux AMI时默认的EC2角色。还有一个SES角色。安全组允许所有TCP出站流量。
答案 0 :(得分:1)
好的,解决了。我放入services.php
的根访问密钥处于非活动状态。我创建了一个新的根密钥文件,替换了services.php
中的密钥,它解决了问题。
答案 1 :(得分:1)
我什至更荒谬。我使用的是VitualBox,时钟已经关闭了几分钟(我的笔记本电脑之前就睡着了),这导致签名不匹配。重新启动虚拟机就可以了。
答案 2 :(得分:0)
我也面临这个问题,已经吃了我几个小时了。解决方案很简单。不要将SMTP凭据用作用户名和密码。而是转到IAM,创建一个新用户并添加SES权限。然后再试一次!!!
答案 3 :(得分:0)
我在Laravel 8上遇到了这个问题,并尝试了一切。事实证明,用引号.env
引起问题。从值中删除双引号解决了我的问题。
坏
MY_SECRET="secret_aws_key_420"
好
MY_SECRET=secret_aws_key_420
这很好奇,因为引入引号是一种确保不会发生这种编码问题的方法。
供参考的软件包版本: