Laravel 5.5 尝试使用 Aws SES 发送邮件但它一直返回错误

Laravel 5.5 trying to use Aws SES to send mails but it keeps returning errors

我正在建立一个网站,其中包含一个将使用 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 设置为使用 .env() vaules 与 services.php:

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

我已申请并被沙盒移除。

我为 IAM 用户设置了 AmazonSESFullAccess,甚至制定了我自己的策略 (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。

您似乎尚未验证要在 SES 中发送的域(或电子邮件)。

您应该按照 AWS 网站上的说明验证域(添加所需的 DNS 记录等)。请参阅以下页面: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-domains.html

如果您计划只从一封电子邮件发送,您可以在 SES 仪表板中手动验证它。 https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses-procedure.html

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

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

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

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