通过Amazon SES SMTP发送电子邮件错误
本文关键字:电子邮件 错误 SMTP Amazon SES 通过 | 更新日期: 2023-09-27 18:19:02
我正在尝试使用。net内置的SmtpClient
通过Amazon SES新的SMTP服务发送电子邮件
var emailClient = new SmtpClient("email-smtp.us-east-1.amazonaws.com", 465);
emailClient.EnableSsl = true;
....
emailClient.Send(message);
我得到一个异常:
无法从传输连接读取数据:net_io_connectionclosed
Google说这个错误意味着我无法访问SMTP服务器。它们需要TLS,我相信这是通过"EnableSsl"属性实现的。
有人知道我需要如何调整我的代码使其工作吗?
编辑:我想我要结束这个问题了。不,这是不可能做我想要的SmtpClient
https://forums.aws.amazon.com/thread.jspa?messageID=302112& # 302112
可以通过指定端口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>
作为配置,您可以像通常那样使用SmtpClient
var client = new SmtpClient();
var message = new MailMessage(fromemail, recipient, subject, body);
client.Send(message);
我可以确认它可以与STARTTLS和端口587一起工作。
希望有帮助
根据Amazon -不像我们过去那样支持。
https://forums.aws.amazon.com/thread.jspa?messageID=302112& # 302112
.NET email TLS库只支持STARTTLS,而SES不支持今天的支持。我们支持所谓的"TLS包装器"或SMTPS身份验证。我能理解你有多沮丧,但是您可以使用OpenSSL作为解决方案,并通过该软件进行隧道在您的计算机上运行,使用。net针对我们的SMTP进行编程端点。
正如masterfu在他的博客文章中提到的,Amazon SES在2012年3月开始支持STARTTLS。
下面是我用来让SMTP与Amazon一起工作的代码。
string username = ConfigurationManager.AppSettings["AWSSMTPUser"];
string password = ConfigurationManager.AppSettings["AWSSMTPPass"];
SmtpClient smtp = new SmtpClient();
smtp.Host = "email-smtp.us-east-1.amazonaws.com";
smtp.Port = 587;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential(username, password);
smtp.EnableSsl = true;
smtp.Send(mail);
现在SES支持STARTTTLS:
发送服务器(SMTP) - 25,587或2587(使用STARTTLS连接)或465或2465(使用TLS包装器连接)。
Pruf链接:http://s3.amazonaws.com/awsdocs/ses/latest/ses-dg.pdf
对于任何想要使用正常的。net SMTPClient发送的人。这是可能的,因为您只需要一个包装器。
这里是所有信息的链接:
http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/SMTP.Client.html安装隧道软件并按照链接中的描述进行配置,那么就像下面这样简单:
System.Net.Mail.SmtpClient sc = new SmtpClient();
sc.Host = host;
sc.Port = port;
sc.Credentials = new NetworkCredential(username, password);
sc.Send(mm);
您是否在web.config中设置了defaultCredentials="false" ?
尝试使用端口号。2587,其他端口25,425,587对我的情况有利