Подтвердить что ты не робот

Как использовать электронную почту 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.

4b9b3361

Ответ 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