Как стать автором
Обновить

Использование SmtpClient для отправления почты через SMTP сервер Яндекса с SSL

Время на прочтение 2 мин
Количество просмотров 82K
Если вы используете Яндекс.Почту для домена, то скорее всего уже знаете что неделю назад с 16 сентября 2014 г. SMTP сервер Яндекса smtp.yandex.ru полностью перешел на SSL, о чем компания добросовестно уведомила клиентов (говорю безо всякого сарказма, действительно сработали добросовестно). В почтовой рассылке были приведены инструкции для популярных почтовых клиентов о том, какие изменения в них необходимо произвести, чтобы почта работала после перехода на SSL: Шифрование передаваемых данных. Если кратко, то в настройках SMTP надо указать порт 465 и включить опцию шифрование SSL. Однако, если у вас есть свое .Net приложение, в котором для отправления почты используется стандартный класс System.Net.Mail.SmtpClient, то при попытке использовать эти инструкции возникнет исключение с сообщением о превышении времени ожидания.

Прочитав приведенные выше инструкции, мы могли бы ожидать, что следующий код отработает без проблем:
var msg = new MailMessage(from, to, subj, body);
var smtpClient = new SmtpClient("smtp.yandex.ru", 465);
smtpClient.Credentials = new NetworkCredential(username, pwd);
smtpClient.EnableSsl = true;
smtpClient.Send(msg);

Однако, как было отмечено выше, при попытке послать письмо генерируется исключение. Чтобы код работал, по-прежнему нужно использовать стандартный SMTP порт 25, как для незащищенных соединений, но указав при этом EnableSsl = true:
var msg = new MailMessage(from, to, subj, body);
var smtpClient = new SmtpClient("smtp.yandex.ru", 25);
smtpClient.Credentials = new NetworkCredential(username, pwd);
smtpClient.EnableSsl = true;
smtpClient.Send(msg);

Возможно, это обусловлено реализацией режима явного SSL (explicit SSL) в SmtpClient, когда соединение устанавливается через 25 порт в незашифрованном виде, а затем переключается в защищенный режим. Тем не менее, т.к. решение неочевидное, решил опубликовать его, чтобы сэкономить время тем, кто столкнется с этой проблемой.
Теги:
Хабы:
+9
Комментарии 14
Комментарии Комментарии 14

Публикации

Истории

Работа

.NET разработчик
66 вакансий

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн