Как использовать электронную почту TLS с web.config
Вот мой файл web.config:
<system.net>
<mailSettings>
<smtp from="[email protected]" >
<network host="smtp.gmail.com" port="587" userName="[email protected]" password="yyy" />
</smtp>
</mailSettings>
</system.net>
Мне нужно включить TLS, требование моего почтового сервера. Однако я вижу только SSL.
Ответы
Ответ 1
Фактически он эквивалентен - TLS более широк, чем SSL. Поэтому используйте enableSsl= "true"
для включения TLS. Согласно документации MSDN, это заставит SMTPClient использовать RFC 3207
(и RFC использует оба термина TLS/SSL).
<network enableSsl="true" host="smtp.gmail.com" port="587" ...
Ответ 2
TLS (Transport Level Security) - это чуть более широкий термин, заменивший SSL (Secure Sockets Layer) для защиты HTTP-сообщений. Так что вас просят сделать, это включить SSL.
В Web.Config для System.Net.Mail(.net 2.0) нет значения, которое сопоставляется с свойством EnableSSL для System.Net.Mail.SmtpClient.
Разрешение
1) В коде позади, нам нужно использовать событие PasswordRecovery1_SendingMail для веб-управления
2) Это событие предоставляет нам доступ к отправляемому сообщению электронной почты, а также дает нам возможность отменить операцию отправки
3) Мы сделаем копию этого сообщения электронной почты и создадим новый экземпляр System.Net.Mail.SmtpClient
4) На этот раз у нас есть полный доступ к его свойствам, и мы можем включить/выключить параметр EnableSSL
5) Позволяет установить EnableSSL в true и отправить сообщение электронной почты на требуемый SMTP-сервер
Ниже приведен фрагмент кода.
protected void PasswordRecovery1_SendingMail(object sender, MailMessageEventArgs e)
{
System.Net.Mail.SmtpClient smtpSender = new System.Net.Mail.SmtpClient("mail.google.com", 587);
smtpSender.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtpSender.Credentials = new System.Net.NetworkCredential("[email protected]", "password");
smtpSender.EnableSsl = true;
smtpSender.Send(e.Message);
e.Cancel = true;
}
Шаги Repro
1) Настройте элемент управления PasswordRecovery
2) Укажите все настройки в Web.Config, включая имя пользователя/пароль, имя сервера, отправителя электронной почты и другие
3) Попытайтесь отправить электронную почту для восстановления, когда сервер SMTP требует SSL
Проверьте ссылку ниже:
http://blogs.msdn.com/b/vikas/archive/2008/04/29/bug-asp-net-2-0-passwordrecovery-web-control-cannot-send-emails-to-ssl-enabled-smtp-servers.aspx