仅在windows server 2008 r2上在端口465 (tls1.2)上发送挂号邮件(System.Web.Mail.MailMessage)失败
我有一个基于框架4.5的函数,但它使用旧的库(System.Web.Mail.MailMessage)通过端口465的smtp服务器(挂号邮件tls1.2)发送电子邮件,该函数在windows 10和windows server 2012上运行正常,但在windows server 2008 r2上失败。该错误的类型为System.Web.HttpException,表示它无法到达服务器,但在端口465上进行telnet可以正常工作。windows server 2008 r2有什么问题?
try
{
System.Web.Mail.MailMessage newMail = new System.Web.Mail.MailMessage();
newMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", "server");
newMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", "465");
newMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", "2");
newMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
newMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "username");
newMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "pwd");
newMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");
newMail.From = "mail";
newMail.To = "mail";
newMail.Subject = "test web Mail";
newMail.BodyFormat = System.Web.Mail.MailFormat.Html;
newMail.Body = "body....";
newMail.Priority = System.Web.Mail.MailPriority.High;
System.Web.Mail.SmtpMail.SmtpServer = "smtpserver:465";
System.Web.Mail.SmtpMail.Send(newMail);
Console.WriteLine("Email Send");
}
catch (Exception ex)
{
Console.WriteLine(ex);
}System.We.HttpException (0x80004005)传输无法连接到服务器
发布于 2019-01-04 23:22:54
我通过遵循this指南或伊曼塔斯建议的this启用the 1.2解决了这个问题
在windows server 2008 R2中,必须通过在系统注册表中插入以下键来启用tls1.2协议:
在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols下的Add Folder TLS1.2和文件夹TLS1.2中,在这两个文件夹中添加子文件夹Client和subfolder Server,分别输入设置为0的DisabledByDefault密钥和设置为1的Enabled密钥
https://stackoverflow.com/questions/54040409
复制相似问题