Почему 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);
}
Комментариев нет:
Отправить комментарий