“需要身份验证”SmtpException 尝试从 EC2 实例发送邮件

问题描述 投票:0回答:3

我正在运行 https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-using-smtp-net.html 中列出的 C# 代码,尝试从 EC2 实例发送测试电子邮件。我可以使用 gmail SMTP 服务器轻松运行等效代码,但是当我使用 SES 作为 SMTP 服务器时,我出现 SmtpException 并显示错误消息:

 The SMTP server requires a secure connection or the client was not authenticated. The server response was: Authentication required

在SES中,我做了以下工作:

  1. 已完成我的“发件人”地址和“收件人”地址的“验证新电子邮件地址”流程。 (根据发送统计页面,我的 SES 帐户仍然具有“沙箱”访问权限。)
  2. 在 SES 域名下验证了我的 companyname.com
  3. 在 SES 域下启用 DKIM 设置
  4. 在 SES 域下创建以下发送授权策略:
{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "stmt123456789",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::1234567890:user/ses-smtp-user.20190805-123456"
            },
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail"
            ],
            "Resource": "arn:aws:ses:us-west-2:1234567890:identity/mycompany.com"
        }
    ]
}

我怀疑问题出在我的身份策略或我如何将其链接回我的 EC2 实例,但我不知道。

amazon-web-services amazon-ec2 amazon-ses
3个回答
5
投票

您在以下部分中使用什么:

String SMTP_USERNAME = "smtp_username";
String SMTP_PASSWORD = "smtp_password";

发送授权策略看起来正确,而且如果您的 ses-smtp-user 和 SES 验证的域位于同一帐户中,则不需要,您需要确保您使用的是从 SES 控制台创建的凭据 --> SMTP 设置 --> 凭据。

由于您使用的是 SMTP,因此需要 SMTP 凭据,如果您使用普通的 IAM 访问密钥和秘密密钥,它将不起作用。 SMTP 访问和密钥应从 SES 控制台创建。


2
投票

使用 AWS SES 时需要注意的是,如果您创建自己的 IAM 用户,则无法使用裸的

Access Key
secret

您必须使用算法从用户的 AWS 凭证中获取用户的 SMTP 凭证

请参阅

AWS SES 文档

使用裸 IAM 凭证的症状是类似的错误

SMTP 服务器需要安全连接,或者客户端不安全 已验证。服务器响应是:需要身份验证

有了这些知识,您就可以找到各种

您喜欢的语言的工具来进行转换。


0
投票
如果您使用 SES SMTP 接口在多个区域发送电子邮件,则必须为您计划使用的每个区域生成一组 SMTP 凭据。

© www.soinside.com 2019 - 2024. All rights reserved.