Работа с Яндекс.Почтой через SMTP на C#

C#   22 Сентябрь 2014  Автор статьи:  

В начале сентября многие владельцы ящиков на Яндекс.Почте получили письма следующего содержания:

Вы получили это письмо, потому что пользуетесь сервисом Яндекс.Почта для домена.
Дело в том, что завтра, 16 сентября Яндекс.Почта перейдёт на протокол SSL. При передаче данных по IMAP/POP3/SMTP сервис будет требовать шифрование по SSL. Пожалуйста, измените настройки почтовых программ, которые используют владельцы почтовых ящиков, зарегистрированных в Вашем домене. Иначе с помощью этих программ нельзя будет получать и отправлять письма

Если раньше настраивать SmtpClient для работы с Яндекс.Почтой можно было следующим образом:

1
2
var client = new SmtpClient("smtp.yandex.ru");
client.Credentials = new NetworkCredential("test@yandex.ru", "test");

то 16 сентября такой способ, как и было обещано, перестал работать.
Согласно документации к Яндекс.Почте, теперь при отправке почты необходимо подключаться к SMTP-серверу через SSL-соединение на порт 465. Тем не менее, попытка отправки почты с использованием класса SmtpClient с такими настройками оканчивается неудачей. Работоспособный вариант теперь выглядит так:

1
2
3
4
var client = new SmtpClient("smtp.yandex.ru");
client.Credentials = new NetworkCredential("test@yandex.ru", "test");
client.Port = 25;
client.EnableSsl = true;

Настройки почты также можно задать в конфигурационном файле приложения (в этом случае нужно использовать конструктор SmtpClient без параметров):

1
2
3
4
5
6
7
<system.net>
  <mailSettings>
    <smtp>
      <network host="smtp.yandex.ru" port="25" userName="test@yandex.ru" password="test" enableSsl="true" />
    </smtp>
  </mailSettings>
</system.net>

Допустимо вместо порта 25 использовать порт 587.

  • Карапет

    Крутой сайт!!!

Научиться программировать

  • на Delphi

  • на Java

  • на C++