ChatGPT解决这个技术问题 Extra ChatGPT

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

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

我验证了我的域以及我想要发送的电子邮件地址。

对于两者,它都显示 verified

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

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

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

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


M
Matt Houser

当您的 SES 帐户处于“沙盒”模式时,您可以:

仅从经过验证的域和电子邮件地址发送,并且仅发送到经过验证的域和电子邮件地址

为了发送给其他任何人,您必须联系 AWS 支持并提出请求,将您的账户从沙盒模式中移出:

https://docs.aws.amazon.com/console/ses/sandbox


您还可以从 SES 控制台将目标电子邮件地址添加到已验证的电子邮件地址。然后它允许您向该地址发送测试邮件。
猜想要求错误消息说出这些内容太多了
在我的情况下,一切都得到了验证,仍然得到这个(令人困惑的)错误消息,直到我意识到请求是由错误的 IAM 用户发出的。也值得检查。
出于测试目的,请像这样验证电子邮件:docs.aws.amazon.com/ses/latest/DeveloperGuide/... 您必须将 TXT 记录添加到要验证的域的 DNS 中,或者使用一一添加地址发送到该地址的验证码。还要注意验证是每个区域的,所以在验证太多之前选择你想要测试发送的区域,...hrm..... (^-^)
2020 年还有很多要求
c
coyr

https://i.stack.imgur.com/8caB6.png


屏幕截图现在已过时,可能您的意思是:“已验证身份”
g
georgiecasey

如果电子邮件已经过验证并且您不在 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


不正确,我联系了 AWS 支持,他们说默认情况下,创建的所有帐户都处于沙盒模式。您需要联系 AWS 支持,提交新票证,只要您拥有有效域,他们就会删除沙盒环境。
是的,我说只要您离开 SES 沙箱,您仍然需要使用正确的 AWS 区域。
谢谢!这对我有用。出于某种原因,当我从沙箱中移出时服务器名称发生了变化,而我没有注意到。
@georgiecasey 假设我的 EC2 在新加坡。那么我不能使用 SES,因为我不在弗吉尼亚州或爱尔兰?
@Sarit 不,你仍然可以使用 SES,你只需要使用亚太地区。或者,当我发布我的答案时,您还是这样做了!
b
bhordupur

@Matt Houser 已经回答了这些问题,但我添加了 2020 年 6 月的屏幕截图,解释了他所说的话。

https://i.stack.imgur.com/eEGrE.png


F
Feng Liu

确保

您将电子邮件添加到 ses 并获得验证。您为您的帐户启用生产模式。


M
Mezen sboui

确保

-您已经提交了您的案例请求以支持客户并解释确认它的目的是什么到 24 可能他们会询问您有关您的应用程序的一些其他信息

https://i.stack.imgur.com/hJFbG.png


t
toadead

请注意,已验证身份实际上是区分大小写的。我想知道为什么我会收到这样的错误,即使我的电子邮件已经过验证并且不在 SandBox 中。


G
Greg Wozniak

问题

令人困惑的是,您的电子邮件地址在 AWS SES -> 已验证身份中显示为“已验证”,但仍然无法正常工作。

其实有两个验证:

DKIM 一个(使该字段打勾并经过验证) 电子邮件地址验证

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

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

使用 AWS WorkMail 的简单解决方案

我正在使用 AWS WorkMail,但我创建了一个新组而不是另一个 WorkMail 账户,然后将我的个人账户添加到其中,收到一封验证电子邮件并设法获得:“noreply@...”工作。


E
Endrit Haxhaj

我有这个问题。我验证了域和电子邮件,甚至验证了 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 用户!


o
omeanwell

我已经验证了一个电子邮件地址,然后几天后我的域。当域完全验证(包括 DKIM)时,当我尝试将电子邮件发送到我域中的电子邮件地址时,我仍然收到“电子邮件地址未验证”错误,这不是我特定的验证地址。

我删除了我已验证的电子邮件地址,并重新验证了它,它立即生效。然后我可以发送域范围的电子邮件,而以前 - 我只能发送到我之前验证过的电子邮件。


我有一个祖父(前 DKIM)批准的域和电子邮件地址。我正在设置一个新的域和电子邮件地址。所有代码和密钥以及其他所有内容都相同,我收到此错误。我觉得这篇文章最接近可能是问题所在。我将每 6 小时左右检查一次,如果它不起作用,我将删除并重新提供电子邮件。如果它立即起作用,我会赞成这篇文章作为解决方案。更多即将到来。
J
JMcK

我遇到了这个问题,以上都没有对我有用。我的问题专门与使用 boro3 通过 python 发送有关。我最终发现我正在使用的系统在 Windows 系统中存储了一组不同的 aws 凭据,而不是在同一台 Windows 机器上的 Linux 子系统上存储的。解决方案是设置两组 aws 凭证以匹配适当的 aws 帐户。我在这里添加这个以防万一有人遇到同样的问题,并且像我一样找不到答案。


i
israteneda

就我而言,我想通过电子邮件发送到同一封验证电子邮件。因此,正如@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'])

这就像一对深陷地狱的调试类型
抱歉@serraosays 我没有理解情侣级别深入地狱的含义,是不是答案错了?
不,只是对您的回答的透彻印象深刻。对 AWS SES 在解决这些问题方面的糟糕程度感到有些失望。我正在处理类似的 rn。
S
Suraj Rao

几分钟前我遇到了同样的问题,尽管这次我正在使用 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',

]);

它现在正在工作。


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅