我想使用亚马逊的简单电子邮件服务发送电子邮件。
我验证了我的域以及我想要发送的电子邮件地址。
对于两者,它都显示 verified
。
现在,当我使用从 AWS 控制台发送测试电子邮件向 myemail@outlook.com
发送测试电子邮件时,我只收到错误消息:
电子邮件地址未验证。以下身份未能通过 EU-WEST-1 区域的检查:myemail@outlook.com(请求 ID:9fb78de1-2673-11e6-bbbc-5f819fabe4f4)
现在它让我感到震惊,因为它说 myemail@outlook.com
未经验证,但我试图从 admin@mydomain.example
发送。发送测试电子邮件对话框甚至会强制您使用已注册的电子邮件。
如何解决这个问题?我错过了什么吗?
当您的 SES 帐户处于“沙盒”模式时,您可以:
仅从经过验证的域和电子邮件地址发送,并且仅发送到经过验证的域和电子邮件地址
为了发送给其他任何人,您必须联系 AWS 支持并提出请求,将您的账户从沙盒模式中移出:
https://docs.aws.amazon.com/console/ses/sandbox
https://i.stack.imgur.com/8caB6.png
如果电子邮件已经过验证并且您不在 SES 沙箱中,请检查您是否拥有适用于 SMTP 服务器的正确 AWS 区域。当我的 SMTP 凭证用于 email-smtp.us-east-1.amazonaws.com
服务器时,我试图连接到 email-smtp.eu-west-1.amazonaws.com
。
https://i.stack.imgur.com/JqE1Z.png
SES
,因为我不在弗吉尼亚州或爱尔兰?
@Matt Houser 已经回答了这些问题,但我添加了 2020 年 6 月的屏幕截图,解释了他所说的话。
https://i.stack.imgur.com/eEGrE.png
确保
您将电子邮件添加到 ses 并获得验证。您为您的帐户启用生产模式。
确保
-您已经提交了您的案例请求以支持客户并解释确认它的目的是什么到 24 可能他们会询问您有关您的应用程序的一些其他信息
https://i.stack.imgur.com/hJFbG.png
请注意,已验证身份实际上是区分大小写的。我想知道为什么我会收到这样的错误,即使我的电子邮件已经过验证并且不在 SandBox 中。
问题
令人困惑的是,您的电子邮件地址在 AWS SES -> 已验证身份中显示为“已验证”,但仍然无法正常工作。
其实有两个验证:
DKIM 一个(使该字段打勾并经过验证) 电子邮件地址验证
这意味着您必须使用您有权访问的电子邮件地址(邮箱)才能点击验证链接。
如果不单击电子邮件中的链接,您的身份可能会得到验证,但您仍然会在各处看到错误。
使用 AWS WorkMail 的简单解决方案
我正在使用 AWS WorkMail,但我创建了一个新组而不是另一个 WorkMail 账户,然后将我的个人账户添加到其中,收到一封验证电子邮件并设法获得:“noreply@...”工作。
我有这个问题。我验证了域和电子邮件,甚至验证了 DKIM 设置。但仍然收到此消息:
Email address is not verified. The following identities failed the check in region {aws_region}: {email}
我将 SourceArn 添加为 sendEmail 的参数,而不是收到此消息:
User `arn:aws:iam::{account_id}:user/{username}' is not authorized to perform `ses:SendEmail' on resource `arn:aws:ses:{aws_region:{account_id}:identity/{email}'
2 天后,我发现我使用了错误的 IAM 用户!
我已经验证了一个电子邮件地址,然后几天后我的域。当域完全验证(包括 DKIM)时,当我尝试将电子邮件发送到我域中的电子邮件地址时,我仍然收到“电子邮件地址未验证”错误,这不是我特定的验证地址。
我删除了我已验证的电子邮件地址,并重新验证了它,它立即生效。然后我可以发送域范围的电子邮件,而以前 - 我只能发送到我之前验证过的电子邮件。
我遇到了这个问题,以上都没有对我有用。我的问题专门与使用 boro3 通过 python 发送有关。我最终发现我正在使用的系统在 Windows 系统中存储了一组不同的 aws 凭据,而不是在同一台 Windows 机器上的 Linux 子系统上存储的。解决方案是设置两组 aws 凭证以匹配适当的 aws 帐户。我在这里添加这个以防万一有人遇到同样的问题,并且像我一样找不到答案。
就我而言,我想通过电子邮件发送到同一封验证电子邮件。因此,正如@Greg Wozniak 提到的,我通过 DKIM 验证了我的电子邮件。我看到该字段打勾绿色并验证:
https://i.stack.imgur.com/ZZ6n4.png
但我仍然看到:
Email address is not verified. The following identities failed the check in region...
我的解决方案是在代码中添加这个函数:
def verify_email_identity():
ses_client = boto3.client("ses", region_name="us-east-1")
response = ses_client.verify_email_identity(
# Email address that will receive the email
# In my case the same email address
# that was verified on Amazon SES
EmailAddress="receipientemail@gmail.com"
)
print(response)
取自 this webside
因此,我收到了一封新电子邮件,以验证收件人的电子邮件地址。通过单击 Amazon SES 发送的链接验证收件人电子邮件地址后。我能够使用以下代码发送电子邮件:
client = boto3.client('ses',region_name="us-east-1")
# Try to send the email.
try:
#Provide the contents of the email.
response = client.send_email(
Destination={
'ToAddresses': [
receipientemail@gmail.com,
],
},
Message={
'Body': {
'Html': {
'Charset': "UTF-8",
'Data': "Test",
},
},
'Subject': {
'Charset': "UTF-8",
'Data': "Test",
},
},
Source=receipientemail@gmail.com,
)
# Display an error if something goes wrong.
except ClientError as e:
print(e.response['Error']['Message'])
else:
print("Email sent! Message ID:"),
print(response['MessageId'])
几分钟前我遇到了同样的问题,尽管这次我正在使用 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',
]);
它现在正在工作。
不定期副业成功案例分享