我正在运行 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中,我做了以下工作:
{
"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 实例,但我不知道。
您在以下部分中使用什么:
String SMTP_USERNAME = "smtp_username";
String SMTP_PASSWORD = "smtp_password";
发送授权策略看起来正确,而且如果您的 ses-smtp-user 和 SES 验证的域位于同一帐户中,则不需要,您需要确保您使用的是从 SES 控制台创建的凭据 --> SMTP 设置 --> 凭据。
由于您使用的是 SMTP,因此需要 SMTP 凭据,如果您使用普通的 IAM 访问密钥和秘密密钥,它将不起作用。 SMTP 访问和密钥应从 SES 控制台创建。
使用 AWS SES 时需要注意的是,如果您创建自己的 IAM 用户,则无法使用裸的
Access Key
和 secret
。
您必须使用算法从用户的 AWS 凭证中获取用户的 SMTP 凭证
请参阅 使用裸 IAM 凭证的症状是类似的错误
SMTP 服务器需要安全连接,或者客户端不安全 已验证。服务器响应是:需要身份验证有了这些知识,您就可以找到各种
您喜欢的语言的工具来进行转换。