Не отправляет почту - 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;
}
}