电子邮件地址未经验证(AWS SES)

274

我想使用Amazon的简单电子邮件服务发送电子邮件。

我已经验证了我的域名和我想要发送的电子邮件地址。

对于两者,都显示已验证

现在,当我从AWS控制台使用“发送测试电子邮件”将测试电子邮件发送到myemail@outlook.com时,我只收到错误消息:

电子邮件地址未经过验证。以下身份在EU-WEST-1地区未通过检查:myemail@outlook.com(请求ID:9fb78de1-2673-11e6-bbbc-5f819fabe4f4)

现在让我感到困惑的是,因为它说myemail@outlook.com未经验证,但我尝试从admin@mydomain.example发送。甚至发件测试电子邮件对话框也强制你使用已注册的电子邮件。

如何解决这个问题?我错过了什么吗?


1
您只能向已验证的电子邮件地址和域发送邮件,或者发送到Amazon SES邮箱模拟器。https://docs.aws.amazon.com/ses/latest/dg/send-an-email-from-console.html#send-email-simulator - Hamdi Yilmaz
18个回答

2

对我来说问题在于大小写不匹配。 验证的电子邮件和发送的电子邮件必须完全匹配。

test@gmail.com vs Test@gmail.com

1

问题

混淆出现在您的电子邮件地址在AWS SES -> 已验证的身份中显示为“已验证”,但仍无法正常工作。

实际上,有两种验证:

  1. DKIM(使字段选中变绿并进行验证)
  2. 电子邮件地址验证

这意味着您必须使用您可以访问(收件箱)的电子邮件地址才能单击验证链接。

如果没有单击电子邮件中的链接,则可能已验证您的身份,但仍会在各处看到错误。

使用AWS WorkMail的简单解决方案

我正在使用AWS WorkMail,但我创建了一个新组,而不是另一个WorkMail帐户,然后将我的个人帐户添加到该组中,接收了验证电子邮件并成功使“noreply@...”起作用。


1
由于您处于沙盒模式,您可以添加和验证电子邮件:“myemail@outlook.com”以进行临时测试。否则,您需要从生产账户切换到沙盒账户。

1

我几分钟前也遇到了同样的问题,不过这次我在 PHP 的 SDK 中工作。

我不得不仔细检查 SesClient 实例化代码。

$SesClient = new SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region'  => 'us-west-2',

]);

我发现实例化代码中的区域是us-west-2。 我回到我的控制台,发现SES帐户被限制在us-east-2(俄亥俄州)。

我像这样实现了实例化代码的更改

$SesClient = new SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region'  => 'us-east-2',

]);

现在它正在运行。


0
我曾经遇到过这个问题,但以上方法都没有解决我的问题。我的问题是在使用boro3通过Python发送邮件时出现的。最终我发现,在同一台Windows机器上的Linux子系统和Windows系统中存储的AWS凭证不同。解决方案是将两组AWS凭证设置为匹配相应的AWS账户。我在这里添加这个解决方案,以防有人遇到同样的问题,而像我一样找不到答案。

0
我遇到了同样的问题;在阅读了这个文档之后,我意识到有一些参数是缺失的。
如果你正在使用boto3,你应该在send_email中也发送ReturnPathArnSourceArn,这对我起作用了。

0
请注意,在沙盒环境中,如果您将收件人和发件人设置为相同的地址(即使已验证),SES似乎会抛出此错误。

0
在我的情况下,我使用的是 cdk。我的电子邮件使用的是自定义域名,并且该域名已经通过验证。当我通过 cdk 配置我的电子邮件与 SES 时,我没有添加属性 sesVerifiedDomain。将该值设置为我使用的自定义域名解决了我的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接