Страницы

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

воскресенье, 22 декабря 2019 г.

Почему SmtpClient не отправляет письмо и не выдает исключение?

#c_sharp #wpf #email #mailru


При запуске данного кода:

MailMessage mail = new MailMessage();
mail.From = new MailAddress(senderBox.Text);
mail.To.Add(recipientBox.Text);
mail.Subject = subjectBox.Text;
mail.Body = bodyBox.Text;

SmtpClient SmtpServer = new SmtpClient("smtp.mail.ru");
SmtpServer.Port = 465;
SmtpServer.Credentials = new NetworkCredential(senderBox.Text, passwordBox.Password);
SmtpServer.EnableSsl = true;

try
{
    SmtpServer.Send(mail);
}
catch (Exception exc)
{
    MessageBox.Show(exc.Message);
}


Код покидает функцию после строки SmtpServer.Send(mail);, но письмо не отправляется
и код не входит в catch-блок. Чем можно объяснить такое поведение?
UPD:
проблема была в порте.Попробовал 587-все нормально работает
    


Ответы

Ответ 1



Для диагностики, чтобы понять что происходит, можно включить следующий блок в раздел в файл app.config Тогда можно будет увидеть и понять отправилось Ваше сообщение на smtp сервер или нет и что именно происходит.

Ответ 2



SMTP сервер mail.ru не смотря на то что работает через SSL но при этом использует 25 порт, вот такой вот парадокс, потратил пол-дня пока разобрался

Ответ 3



Метод Send не гарантирует 100% отправки сообщения. Этот метод только добавляет ваше письмо в очередь на отправку на SMTP сервере, а дальше уже сервер сам решает отправлять его или нет. Проверьте сервер. На том же mail.ru стоят фильтры антиспама - проверьте, что письмо не попало в них. Если ничего не выйдет - напишите в саппорт или смените SMTP сервер.

Ответ 4



Вот мой работающий код (ранее тоже мучался с этим вопросом) private Task SendEmailAsync(IdentityMessage message) { string email_address = "blala@blala.ru"; SmtpClient smtp = new SmtpClient("smtp.mail.ru", 25); smtp.Credentials = new NetworkCredential(email_address, "blala"); smtp.EnableSsl = true; smtp.Timeout = 20000; //20s MailMessage mailMessage = new MailMessage(email_address, message.Destination, message.Subject, message.Body); try { //smtp.SendAsync(mailMessage, 1); smtp.Send(mailMessage); } catch (Exception ex) { Debug.WriteLine($"Произошла ошибка при отправке email: {ex.Message}"); Task.FromException(ex); } return Task.FromResult(0); }

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

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