Страницы

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

суббота, 7 марта 2020 г.

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

#c_sharp #net #веб_программирование #smtp


Написал маленькую прогу на 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); Подскажите как решить проблему?
    


Ответы

Ответ 1



Отлично, вы верно решили проблему. Сейчас давайте определимся с причинами такого поведения. Существует два способа соединения по протоколу 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 до сих пор не стандартизирован.

Ответ 2



Вот Вам отличный вариант отправки сообщения на почту: Стандартные, используемые порты Некоторые интернет-провайдеры в целях предотвращения рассылки СПАМ закрывают для доступа 25-й порт, который требуется для работы SMTP-протокола. Если закрыт 25-й порт. Если почта у вас не отправляется, вероятно ваш Интернет-провайдер заблокировал 25-й порт, используемый для работы протокола SMTP. Это ограничение можно обойти, используя порт 587 (без шифрования или с использованием TLS-шифрования) или 465 (с использованием SSL-шифрования) обычно не блокируется. using System.Net; using System.Net.Mail; using System.Text; using System.Windows.Forms; public class SettingMessage { public static void MessageSend() // можете добавить аргументы { MailMessage message = new MailMessage(); SmtpClient client = new SmtpClient("smtp.mail.ru", Convert.ToInt32(0x19)) // сервер,порт { Credentials = new NetworkCredential("Ваш Email", "Ваш пароль"), EnableSsl = true // обязательно! }; message.From = new MailAddress("От кого посылать"); message.To.Add(new MailAddress("Кому посылать")); message.Subject = "Заголовок"; message.SubjectEncoding = Encoding.UTF8; message.Body = "Текст в форме сообщения"; message.BodyEncoding = Encoding.UTF8; // кодировка string fileName = @"C:\Resume.txt"; // какой-нибудь файл Attachment item = new Attachment(fileName); message.Attachments.Add(item);// добавляем файл к сообщению client.Send(message); // отправка сообщения MessageBox.Show("Сообщение отправлено успешно)))"); } }

Ответ 3



Проблема была в порте. SmtpClient client = new SmtpClient("smtp.mail.ru", 2525); так работает

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

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