Страницы

Поиск по вопросам

среда, 22 мая 2019 г.

Не отправляется письмо через smtp mail - время ожидания операции истекло

Написал маленькую прогу на WinForms с опцией отправки сообщения. Собсно код :
SmtpClient client = new SmtpClient("smtp.mail.ru", 465); client.Credentials = new NetworkCredential("vasiliy.aksenov.97@mail.ru", "11aa11aa"); client.EnableSsl = true; MailMessage mail = new MailMessage(); mail.From = new MailAddress("vasiliy.aksenov.97@mail.ru"); mail.To.Add("vasiliy.aksenov.97@mail.ru"); mail.Subject = "Получен новый заказ на " + OrderData.clothingTypeRuss; mail.Body = "test"; try { client.Send(mail); MessageBox.Show("Заказ успешно отправлен ", "Отправка"); } catch (Exception ex) { MessageBox.Show(ex.Message, ex.Source); }
не отправляет, пишет что время ожидания превышено. и тоже самое с smtp от gmail. Может что то в коде не правильно? Хотя по отладке видно что тормозит именно на client.Send(mail); Подскажите как решить проблему?


Ответ

Отлично, вы верно решили проблему. Сейчас давайте определимся с причинами такого поведения.
Существует два способа соединения по протоколу SMTP c использованием SSL:
Explicit SSL Implicit SSL
Explicit SSL использует порты 25 (или 587), или же, возможно, порт 2525 (не стандартный)
Explicit SSL означает, что клиент сначала подключается по незащищенному каналу, посылает команду EHLO, и если сервер сообщает о том, что шифрование поддерживается, то для включения шифрования клиент посылает команду STARTTLS, затем все дальнейшие коммуникации (включая аутентификацию) между клиентом и сервером уже защищены.
Implicit SSL использует порт 465 и отличается тем, что соединение сразу устанавливается по TLS/SSL.
В настоящее время класс SmtpClient поддерживает только Explicit SSL, потому что Implicit SSL до сих пор не стандартизирован.

Комментариев нет:

Отправить комментарий