首页 > 解决方案 > Laravel 5.5 尝试使用 Aws SES 发送邮件但它不断返回错误

问题描述

我正在建立一个带有联系表格的网站,该表格将使用 AWS SES 发送邮件。我已经设置了我的 .env 文件:

MAIL_DRIVER=ses
MAIL_HOST=us-west-2
MAIL_PORT=587
MAIL_USERNAME=AKADADQADADGX45EO
MAIL_PASSWORD=EASDDEWWWEDWEDASDQWDQWDBTb5
MAIL_ENCRYPTION=tls

我的 mail.php 设置为使用与 services.php 相同的 .env() 值:

'ses' => [
        'key' => env('MAIL_USERNAME'),
        'secret' => env('MAIL_PASSWORD'),
        'region' => env('MAIL_HOST'),
    ],

我已申请并已从沙盒中删除。

我使用 AmazonSESFullAccess 设置了 IAM 用户,甚至制定了我自己的策略 (AmazonSesSendingAccess),以防万一上述情况不正确:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ses:SendRawEmail",
            "Resource": "*"
        }
    ]
}

这不断出现:

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 i ▶
<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">\n
  <Error>\n
    <Type>Sender</Type>\n
    <Code>MessageReje (truncated...)\n
 MessageRejected (client): Email address is not verified. The following identities failed the check in region US-WEST-2: email@email.com - <ErrorResponse  ▶
  <Error>\n
    <Type>Sender</Type>\n
    <Code>MessageRejected</Code>\n
    <Message>Email address is not verified. The following identities failed the check in region US-WEST-2: email@email.com</Message>\n
  </Error>\n
  <RequestId>269f02b9-1320-4882-b3d4-0cd57559aaea</RequestId>\n
</ErrorResponse>

我对此不知所措。因为我不再在沙箱中,所以我不需要验证任何东西。我确定的最后一件事是我已获准进入美国西俄勒冈州,即 us-west-2。

标签: laravellaravel-5.5amazon-ses

解决方案


您必须从 AWS 控制面板本身验证您的域和电子邮件,请尝试查看本文中的第2 点和第 3 点。

回答您的评论:
我并不是说您必须验证您的客户电子邮件,因为这是不可能的,也许只是创建一个no-reply@yourdomain.com或类似的,它将成为电子邮件发件人,并将电子邮件的回复标题设置为电子邮件客户填写表格。

必须进行域验证,因为 AWS 必须确保您确实拥有发送电子邮件的电子邮件帐户的域。

这是一种垃圾邮件预防措施,否则您可能只是在电子邮件标头本身中伪造邮件发件人,并且 AWS 邮件服务器可能会被标记为垃圾邮件(这也会影响使用 AWS 发送电子邮件的其他用户)。


推荐阅读