仅在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)传输无法连接到服务器
答案 0 :(得分:-2)
我通过启用this指南后面的tls1.2解决了问题 要么 this由Imantas提出
在Windows Server 2008 R2中,如果不存在以下项,则必须通过在系统注册表中插入来启用tls1.2协议:
在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
下
在TLS 1.2文件夹中添加文件夹TLS 1.2,在TLS 1.2文件夹中添加子文件夹Client和Subfolder Server,在这两个文件夹中,将DisabledByDefault
键设置为0
,将Enabled
键设置为1
>