C # Ошибка отправки сертифицированной почты с System.Web.Mail на Windows Server 2008 R2 - PullRequest
0 голосов
/ 04 января 2019

Отправка сертифицированной почты (System.Web.Mail.MailMessage) через порт 465 (tls1.2) происходит только на Windows Server 2008 r2

У меня есть функция, основанная на платформе 4.5, но она использует старую библиотеку (System.Web.Mail.MailMessage) для отправки электронной почты через сервер smtp через порт 465 (сертифицированная почта tls1.2), функция работает правильно на Windows 10 и Windows Server 2012, но он не работает на Windows Server 2008 R2. ошибка имеет тип System.Web.HttpException, указывающий, что он не может достигнуть сервера, но работа telnet на порту 465 работает. Что не так с 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) транспорт не смог подключиться к серверу

1 Ответ

0 голосов
/ 04 января 2019

Я решил, включив tls1.2 после этого руководства или же это предложение от Imantas

В Windows Server 2008 R2 протокол tls1.2 должен быть включен путем вставки в системный реестр, если не существует, следующий ключ:

Под HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols Добавить папку TLS 1.2 и в папку TLS 1.2 добавить подпапку Клиент и подпапку Сервер в обеих папках введите ключ DisabledByDefault, установленный на 0, а ключ Enabled, установленный на 1

...