如何在 Laravel 8 中设置 AWS SES 身份

How to set AWS SES identity in Laravel 8

我收到错误消息 User arn:aws:iam:blabla:user/blabla is not authorized to preform ses:SendRawEmail on resource arn:aws:ses:locationLblabla:identity/[domain-of-the-to-address].com 我的 DevOps 通知我 [domain-of-the-to-address] 应该给我一个 specific/our 域。我能找到操纵它的唯一方法是更改​​ to 地址。我该如何正确设置?我试过以下

// services.php

return [
  'ses' => [
    'key' => '...',
    'secret' => '...',
    'region' => '...',
    'options' => [
      'SourceARN' => 'arn:aws:ses:locationLblabla:identity/[correct-domain].com'
      'Source' => 'test@[correct-domain].com'
    ],
  ]
];

// MyMailable.php

$this->withSwiftMessage(function (Swift_Message $message) {
  $message->getHeaders()->addTextHeader('X-SES-SOURCE-ARN', 'arn:aws:ses:locationLblabla:identity/[correct-domain].com');
});

编辑:换句话说。我确实拥有 ses:SendRawEmail 权限。我正在发送一封电子邮件,例如: 致:joe-bob@gmail.com 来自:请勿回复@my-comp.com

但是 laravel 驱动程序或 aws sdk 如何将我的身份倒退设置为 arn:aws:ses:locationLblabla:identity/gmail.com 而不是 arn:aws:ses:locationLblabla:identity/my-comp.com 我们没有也不会在使用 ses:SendRawEmail 将 aws 用于单个电子邮件域,因此它不会工作。

我认为您不需要额外的配置选项或额外的文本 header。听起来您的 SES 帐户仍处于 SES 沙盒模式。 SES 帐户在创建时会自动进入沙盒模式,需要请求才能退出沙盒模式。

我假设您已经验证了您发送电子邮件的电子邮件地址或域。但是,在沙盒模式下,您还必须验证您要发送给的电子邮件地址或域。或者,如果您不能这样做,您可以将测试电子邮件发送到 SES 邮箱模拟器 (success@simulator.amazonses.com).

有关沙盒模式、其限制以及准备就绪后如何退出的更多信息,您可以访问 https://docs.aws.amazon.com/ses/latest/dg/request-production-access.html

关于SES邮箱模拟器的更多信息,您可以访问https://docs.aws.amazon.com/ses/latest/dg/send-email-simulator.html

这是一个 IAM 错误,您能否确认您正在使用的 AWS Key/Secret 的 IAM 用户分配了 ses:SendRawEmail,或者是否有 IAM 角色授予访问权限ses:SendRawEmail 在 Instance/Lambda 你的代码是 运行 from?

确保 IAM 权限没有任何可能导致它不适用的限制(例如仅适用于某些 servers/tags/IPs/SES 身份...)。

听起来您已经在 SES 中验证了您的域,所以只要 AWS 批准您离开沙盒,那么您应该会在 IAM 问题解决后立即发送。