通过Amazon SES SMTP发送电子邮件错误

kat*_*tit 9 .net c# smtp amazon-web-services

我正在尝试使用.NET内置的Amazon SES新SMTP服务发送电子邮件 SmtpClient

码:

    var emailClient = new SmtpClient("email-smtp.us-east-1.amazonaws.com", 465);
                    emailClient.EnableSsl = true;
....
emailClient.Send(message);
Run Code Online (Sandbox Code Playgroud)

我得到一个例外:

无法从传输连接中读取数据:net_io_connectionclosed

Google表示此错误意味着我无法访问SMTP服务器.它们需要TLS,我通过"EnableSsl"属性实现了它.

有人知道我需要调整我的代码才能使它工作吗?

编辑:

我想我会关闭这个问题.不,用SmtpClient做我想做的事是不可能的

https://forums.aws.amazon.com/thread.jspa?messageID=302112鰠

cbe*_*ner 9

可以通过指定端口587来执行此操作.

<system.net>
   <mailSettings>
     <smtp deliveryMethod="Network">
       <network enableSsl="true" port="587" host="email-smtp.us-east-1.amazonaws.com" password="[password]" userName="[username]"/>
     </smtp>
   </mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)

使用它作为配置,您可以像平常一样使用SmtpClient

var client = new SmtpClient();
var message = new MailMessage(fromemail, recipient, subject, body);
client.Send(message);
Run Code Online (Sandbox Code Playgroud)


kat*_*tit 5

根据亚马逊 - 它不像以前那样受到支持.

https://forums.aws.amazon.com/thread.jspa?messageID=302112鰠

.NET电子邮件TLS库仅支持SES今天不支持的STARTTLS.我们支持所谓的"TLS Wrapper"或SMTPS身份验证.我可以理解这会令人沮丧,但您可以使用OpenSSL作为解决方法并通过计算机上运行的软件进行隧道,以使用.NET对我们的SMTP端点进行编程.


Mas*_*rfu 5

我可以确认它适用于STARTTLS和端口587.

希望有所帮助