Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Яндекс.Почта завтра перейдёт на протокол SSL / 17 сообщений из 17, страница 1 из 1
15.09.2014, 22:21
    #38747291
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
Юзаю в ASP.NET-проекте Яндекс.Почту , но без SSL шифрования. Но, Завтра, 16 сентября, Яндекс.Почта перейдёт на протокол SSL.
То есть мне надо переписать код для работы с SSL. Вроде, ничего сложного нет, надо просто:
1. Поменять порт с 25 на 465
2. Smtp.EnableSsl = true; (где SmtpClient Smtp = new SmtpClient(smtp, Port);)

Весь код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
        string smtp = "smtp.yandex.ru",
            login = "noreply@mysite.ru",
            password = "MyPass",
            FromMail = "noreply@mysite.ru";
        public void Send(string subject, string txt, string SendToEMail)
        {
            //Авторизация на SMTP сервере
            SmtpClient Smtp = new SmtpClient(smtp, Port);
            Smtp.EnableSsl = true;
            //Smtp.UseDefaultCredentials = false;
            Smtp.Credentials = new NetworkCredential(login, password);

            //Формирование письма
            MailMessage Message = new MailMessage();
            Message.From = new MailAddress(FromMail);
            Message.To.Add(new MailAddress(SendToEMail));
            Message.Subject = subject;
            Message.IsBodyHtml = true;
            Message.Body = txt;

            Smtp.Send(Message);//отправка

            Message.Dispose(); Smtp.Dispose();
        }



И всё должно работать! Но не тут то было! Словом не работает и я получаю сообщение:
Mail.Send: The operation has timed out.

И вот нашёл статейку в которой говорится, что ...

Явный режим SSL
Дело в том, что System.Net.Mail поддерживает только так называемый «Explicit SSL» — явный режим SSL. Явный режим SSL начинается в незашифрованном виде через порт 25, затем выдает STARTTLS и переключается на зашифрованное соединение. Более подробно этот стандарт описан в RFC 2228.
Явный режим SLL выглядит как-то так: подключение 25 порта -> StartTLS (начинает шифровать) -> аутентификация -> передача данных.
Если SMTP-сервер ожидает SSL/TLS соединение с самого начала, то явный режим SSL не будет работать.
Если Вы видите, что при попытке отправить сообщение возвращается ошибка «530 Must issue a STARTTLS command first», то явный режим SSL работает так, как и ожидалось.

Неявный режим SSL
В C# нет возможности использовать неявный SSL (SMTPS) с System.Net.Mail. При использовании неявного режима SSL клиент соединяется с сервером, используя SSL. Для него надо открывать другой, отличный от стандартного порт (порт 465 является общим). Для неявного режима SSL нет формального RFC, покрывающего этот стандарт.
Неявный режим SLL выглядит как-то так: начать SSL (начать шифрование) -> подключение -> аутентификация -> передача данных.
Это более старая версия протокола. Она не считается ошибочной, просто имеет другой дизайн. Поэтому до сих пор и существует два типа аутентификации SSL для SMTP, и в C# с System.Net.Mail (по дизайну) поддерживается только явный режим SSL.
ASP.NET в web.config использует System.Net.Mail для отправки сообщений — поэтому отправка почты не будет работать с неявным режимом SSL, т.е. C# и Яндекс.Почта не смогут работать вместе. Эту проблему можно решить через System.Web.Mail в коде *.cs (но не в web.config), т.к. System.Web.Mail использует CDOSYS для отправки сообщений и должен работать как с явным режимом SSL, так и с неявным.

Что это получается? Что я не могу юзать почту Яндекса в своём проекте!
Вопрос к знатокам: Можно ли решить данную проблему?
...
Рейтинг: 0 / 0
15.09.2014, 22:29
    #38747300
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
potkin,

пицот лет гоняю почту через яндекс по SSL и проблем не испытываю. хз. почта в своём домене.
...
Рейтинг: 0 / 0
15.09.2014, 22:30
    #38747302
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
potkin,

Smtp.Port = 25;
EnableSsl = true;
...
Рейтинг: 0 / 0
15.09.2014, 22:31
    #38747304
codearticles.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
Люди с прямыми руками давно уже научились хранить данные почтовых ящиков в секции smtp веб конфига.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<system.net>
    <mailSettings>
      <smtp>
        <network host="smtp.yandex.ru" port="25" userName="...@codearticles.ru" password="..." >>>enableSsl="true"<<< />
      </smtp>
    </mailSettings>
  </system.net>
</system.net>



P.S. Яндекс почта с самого начала работата с SSL. И сейчас работает.
...
Рейтинг: 0 / 0
15.09.2014, 22:33
    #38747305
codearticles.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
А для секурности можно и закриптоваться с помощью DataProtectionConfigurationProvider

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<system.net>
    <mailSettings>
      <smtp configProtectionProvider="DataProtectionConfigurationProvider">
        <EncryptedData>
          <CipherData>
            <CipherValue>AQBBMndRoAwE/Cl...==</CipherValue>
          </CipherData>
        </EncryptedData>
      </smtp>
    </mailSettings>
</system.net>
...
Рейтинг: 0 / 0
15.09.2014, 22:47
    #38747320
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
С Яндекса ответили, что надо указать именно 465 порт.
Я так понял, что 25 работать не будет ...
Может что-то не так понял, завтра будет видно ...
...
Рейтинг: 0 / 0
15.09.2014, 23:33
    #38747332
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
codearticles.ruЛюди с прямыми руками давно уже научились хранить данные почтовых ящиков в секции smtp веб конфига.

Тру +
...
Рейтинг: 0 / 0
20.09.2014, 11:45
    #38752300
andy7810
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
У меня тоже была такая проблема.
Попробовав в цикле все возможные комбинации, получил решение :)
Для SmtpClient надо использовать следующие настройки:

Код: c#
1.
2.
3.
4.
5.
6.
mail.SmtpPort=25;
mail.EnableSsl=true;
mail.UseDefaultCredentials = false;
mail.Сredentials = new NetworkCredential(account.SenderAddress, account.Password); // Домен не указывать!
mail.DeliveryMethod = SmtpDeliveryMethod.Network;
mail.DeliveryFormat = SmtpDeliveryFormat.SevenBit;



Т.е. надо все-таки идти через 25 порт, но по SSL, не указывать домен в Credentials, и надо обязательно проставлять DeliveryFormat. Без него выдается ошибка. Как только указал, что надо указывать SevenBit, всё тут же получилось.
...
Рейтинг: 0 / 0
20.09.2014, 12:08
    #38752319
codearticles.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
У меня всё как работало, так и работает. Это не носки пойти на базар, Яндекс давно бы уведомил клиентов об изменениях. А верить какому-то дикарю с хабра оснований у меня нету.
...
Рейтинг: 0 / 0
22.09.2014, 07:05
    #38753185
antihacker777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
potkinС Яндекса ответили, что надо указать именно 465 порт.
Я так понял, что 25 работать не будет ...
Может что-то не так понял, завтра будет видно ...

Вы путаете пор клиента с портом сервера Яндекса. Ваш сервер передает данные во внешний мир через порт 25. А сервер яндекс из внешнего мира принимает через 465.

У мяен проблема была с 1С. Версия 8,1 не поддерживает SSL. Решил через утилитку STUNNEL. Он слушает Ваш 25 - ый порт и передаетв яндекс данные шифрую в SSL. Ничего перепиывать не надо.

С уважением.
...
Рейтинг: 0 / 0
22.09.2014, 07:34
    #38753189
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
antihacker777Вы путаете пор клиента с портом сервера Яндекса. Ваш сервер передает данные во внешний мир через порт 25. А сервер яндекс из внешнего мира принимает через 465.
К сожалению, путаешься здесь ты. Оба порта - серверные. Это легко проверить подключившись туда с помощью telnet. Для упрощения теста можно взять HTTP протокол вместо SMTP. telnet www.sql.ru 80 выполнит подключение к 80 порту на www.sql.ru и ты сможешь вручную отправить HTTP запрос.
...
Рейтинг: 0 / 0
22.09.2014, 07:51
    #38753195
antihacker777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
Может Вы не правильно поняли ? Любой почтовый клиент для SMTP использует 25-й порт.

Почтовый клиент передает данные в 127.0.0.1:25 машины. А машина из 127.0.0.1:25 в SMTP.YANDEX.RU:465
...
Рейтинг: 0 / 0
22.09.2014, 08:09
    #38753198
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
antihacker777, я все правильно понял. Порт 25 зарезервирован для проткола SMTP. Его открывает сервер. Подключение идет с localhost:случаный-порт на smtp.yandex.ru:25 или smtp.yandex.ru:465.
...
Рейтинг: 0 / 0
22.09.2014, 08:15
    #38753200
antihacker777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
То есть все такие не поняли. Заставить клиента передавать в 127.0.0.1. А от туда STUNNEL передает ,шифруя, в smtp.yandex.ru:465.
...
Рейтинг: 0 / 0
22.09.2014, 08:23
    #38753204
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
antihacker777, я решил что ты отдельно про порты, а отдельно про утилиту туннелирования. Не так тебя понял, да.
...
Рейтинг: 0 / 0
22.09.2014, 08:27
    #38753207
antihacker777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
Айм сорри. МОжет я тоже не правильно формулировал :-). Я просто предлогал решение проблемы.
...
Рейтинг: 0 / 0
06.11.2014, 09:59
    #38796992
mskald
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яндекс.Почта завтра перейдёт на протокол SSL
Проблема в том, что установка флага UseDefaultCredentials очищает установленные ранее данные учетной записи.

Код: c#
1.
2.
3.
4.
5.
6.
7.
string mr = "user@domain.net";
SmtpClient Smtp = new SmtpClient("smtp.yandex.ru", 587);
Smtp.UseDefaultCredentials = false; //<--- ошибка из-за того что данная строка была после установки имени пользователя и пароля.
Smtp.Credentials = new NetworkCredential(mr, "password");
Smtp.EnableSsl = true;
MailMessage Message = new MailMessage(mr, mr, "subject 01 ", "test message");
Smtp.Send(Message);
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Яндекс.Почта завтра перейдёт на протокол SSL / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]