Очень часто приходится сталкиваться с отправкой электронных писем из программного кода. За примерами далеко ходить не нужно.
Данная статья является подсказкой и не открывает ничего нового, но прежде чем её писать, посмотрел похожее в интернете и был довольно удивлён тому, что почти везде предлагают или не работающее или устаревшее решение, либо просто написано неграмотно.
Первое, что не стоит делать по этим примерам – это использовать System.Web.Mail, который уже давно устарел, а начиная с Visual Studio 2010 библиотеку System.Web даже и не добавить, не зная полного пути к соответствующей DLL.
Вместо него предлагается использовать библиотеку System.Net.
Итак, самое простое, оно же самое важное и часто использующееся — это отправка письма со своего почтового сервера, на котором настроен SMTP-клиент. Как вы понимаете, сервер может быть как и тот, на котором работает приложение, так и удалённый, на котором у вас есть права отправлять письма без дополнительной авторизации.
Пример кода для отправки письма с локальной машины:
С использованием почтовых служб, таких как Gmail, Yandex, Mail.ru и т.д. всё то же самое, только добавляются параметры с авторизацией.

SMTP-сервер: smtp.gmail.com
Порт: 587

SMTP-сервер: smtp.yandex.ru
Порт: 25

SMTP-сервер: smtp.mail.ru
Порт: 25
Если у вас почтовый ящик на сервисе mail.ru заканчивается на inbox.ru, list.ru или bk.ru, то соответственно меняется и адрес SMTP-сервера (smtp.inbox.ru, smtp.list.ru и smtp.bk.ru).
Как вы видите, для того, чтобы использовать любой другой почтовый сервис в ваших программах, необходимо только выяснить адрес SMTP-сервера и порт, а также правила авторизации.
Необходимо также помнить, что практически все сторонние почтовые сервисы накладывают лимиты на количество отправленных писем в период времени.
Данная статья является подсказкой и не открывает ничего нового, но прежде чем её писать, посмотрел похожее в интернете и был довольно удивлён тому, что почти везде предлагают или не работающее или устаревшее решение, либо просто написано неграмотно.
Первое, что не стоит делать по этим примерам – это использовать System.Web.Mail, который уже давно устарел, а начиная с Visual Studio 2010 библиотеку System.Web даже и не добавить, не зная полного пути к соответствующей DLL.
Вместо него предлагается использовать библиотеку System.Net.
using System.Net;
using System.Net.Mail;
Итак, самое простое, оно же самое важное и часто использующееся — это отправка письма со своего почтового сервера, на котором настроен SMTP-клиент. Как вы понимаете, сервер может быть как и тот, на котором работает приложение, так и удалённый, на котором у вас есть права отправлять письма без дополнительной авторизации.
Пример кода для отправки письма с локальной машины:
using (MailMessage mm = new MailMessage("Name <from@site.com>", "to@site.com")){
mm.Subject = "Mail Subject";
mm.Body = "Mail Body";
mm.IsBodyHtml = false;
using (SmtpClient sc = new SmtpClient("127.0.0.1")){//Здесь должен быть адрес почтового сервера и порт, если требуется
sc.Send(mm);
}
}
С использованием почтовых служб, таких как Gmail, Yandex, Mail.ru и т.д. всё то же самое, только добавляются параметры с авторизацией.

SMTP-сервер: smtp.gmail.com
Порт: 587
using (MailMessage mm = new MailMessage("Name <from@gmail.com>", "to@site.com")){
mm.Subject = "Mail Subject";
mm.Body = "Mail Body";
mm.IsBodyHtml = false;
using (SmtpClient sc = new SmtpClient("smtp.gmail.com", 587)){
sc.EnableSsl = true;
sc.DeliveryMethod = SmtpDeliveryMethod.Network;
sc.UseDefaultCredentials = false;
sc.Credentials = new NetworkCredential("from@gmail.com", "GmailPassword");
sc.Send(mm);
}
}

SMTP-сервер: smtp.yandex.ru
Порт: 25
using (MailMessage mm = new MailMessage("Name <from@yandex.ru>", "to@site.com")){
mm.Subject = "Mail Subject";
mm.Body = "Mail Body";
mm.IsBodyHtml = false;
using (SmtpClient sc = new SmtpClient("smtp.yandex.ru", 25)){
sc.EnableSsl = true;
sc.DeliveryMethod = SmtpDeliveryMethod.Network;
sc.UseDefaultCredentials = false;
sc.Credentials = new NetworkCredential("from@yandex.ru", "YandexPassword");
sc.Send(mm);
}
}

SMTP-сервер: smtp.mail.ru
Порт: 25
using (MailMessage mm = new MailMessage("Name <from@mail.ru>", "to@site.com")){
mm.Subject = "Mail Subject";
mm.Body = "Mail Body";
mm.IsBodyHtml = false;
using (SmtpClient sc = new SmtpClient("smtp.mail.ru", 25)){
sc.EnableSsl = true;
sc.DeliveryMethod = SmtpDeliveryMethod.Network;
sc.UseDefaultCredentials = false;
sc.Credentials = new NetworkCredential("from@mail.ru", "MailRuPassword");
sc.Send(mm);
}
}
Если у вас почтовый ящик на сервисе mail.ru заканчивается на inbox.ru, list.ru или bk.ru, то соответственно меняется и адрес SMTP-сервера (smtp.inbox.ru, smtp.list.ru и smtp.bk.ru).
Как вы видите, для того, чтобы использовать любой другой почтовый сервис в ваших программах, необходимо только выяснить адрес SMTP-сервера и порт, а также правила авторизации.
Необходимо также помнить, что практически все сторонние почтовые сервисы накладывают лимиты на количество отправленных писем в период времени.