Laravel

时间:2016-08-12 09:39:37

标签: laravel amazon-web-services amazon-iam

在我的本地计算机上,邮件按照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出站流量。

4 个答案:

答案 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

这很好奇,因为引入引号是一种确保不会发生这种编码问题的方法。

供参考的软件包版本:

  1. PHP 8
  2. Laravel 8
  3. aws / aws-sdk-php 3.168