Не отправляет почту - C#
Формулировка задачи:
Стоит такая задача: по завершении работы программы надо отправить письмо с логами на указанный адрес.
Я создал 2 тестовых адреса на яндексе и мейле: removed@mail.ru и removed@mail.ru пароль на них один и тот же: Qwerty95.
вот собственно код
Но при запуске висит окно консоли, а потом пишет: Время ожидания операции истекло
Подскажите в чем проблема
using System.Net; using System.Net.Mail; namespace ConsoleApplication2 { internal class Program { /// private static void Main(string[] args) { string mailFrom = "removed@mail.ru"; string mailTo = "removed@mail.ru"; string comment = "12345"; string login = "tesla712"; string password = "Qwerty95"; string subject = "Отчёт за "; MailMessage msg = new MailMessage(mailFrom, mailTo, subject, comment); //msg.Attachments.Add(new Attachment(new MemoryStream(ExcelHelper.GetReport(dateReportStart, dateReportEnd)), "отчёт.xlsx")); SmtpClient SMTP = new SmtpClient("smtp.yandex.ru", 465); SMTP.EnableSsl = true; SMTP.Credentials = new NetworkCredential(login, password); SMTP.Send(msg); } } }
Решение задачи: «Не отправляет почту»
textual
Листинг программы
bool SendMessage(string strName, string strLog, string strText, string strPass, string outMail, string strSubject) { try { // обнулим на всяк случай string smtp = ""; int port = 0; // здесь не уверен на счет портов // может (скорее всего) они неправильны, но если что // это все легко гуглится ;) парвильный только gmail.com var mailCoding = new Dictionary<string, int> { {"gmail.com", 587}, {"yandex.ru", 225}, {"mail.ru", 235}, {"list.ru", 254}, {"inbox.ru", 215}, {"bk.ru", 255} }; // поиск нужного порта и smtp при отправке foreach (var kvp in mailCoding.Where(kvp => strLog.IndexOf(kvp.Key, StringComparison.Ordinal) > -1)) { smtp = "smtp." + kvp.Key; port = kvp.Value; } using (var mailMessage = new MailMessage(strName + " <" + strLog + ">", outMail)) { mailMessage.Subject = strSubject; // тема письма mailMessage.Body = strText; // письмо mailMessage.IsBodyHtml = true; // без html, но можно включить using (var sc = new SmtpClient(smtp, port)) { sc.EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(strLog, strPass); sc.Send(mailMessage); } } return true; } catch { return false; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д