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