Отправка e-mail средствами C#
В данной статье я хочу рассказать вам, как с помощью C# и .NET Framework осуществить отправку электронной почты. Мы будем отправлять письмо через определенный smtp сервер, который требует авторизацию. Итак, присутпим.
Создадим консольное приложение. Для работы с сетью и почтой необходимо подключить пространства имен:
using System.Net; using System.Net.Mail;
Теперь займемся непосрдественно отправкой почты:
static void SendMail() { //smtp сервер string smtpHost = "smtp.server.net"; //smtp порт int smtpPort = 25; //логин string login = "login"; //пароль string pass = "pass"; //создаем подключение SmtpClient client = new SmtpClient(smtpHost, smtpPort); client.Credentials = new NetworkCredential(login, pass); //От кого письмо string from = "from@server.net"; //Кому письмо string to = "to@server.net"; //Тема письма string subject = "Письмо от C Sharp"; //Текст письма string body = "Привет! \n\n\n Это тестовое письмо от C Sharp"; //Создаем сообщение MailMessage mess = new MailMessage(from, to, subject, body); try { client.Send(mess); Console.WriteLine("Message send"); } catch(Exception ex) { Console.WriteLine(ex.ToString()); Console.ReadKey(); } }
Тело письма и заголовок будут созданы и отослаы в кодировке UTF-8. Если необходимо отослать письмо в кодировке windows-1251 необходимо вручную прописать заголовок:
mess.SubjectEncoding = Encoding.Default; mess.BodyEncoding = Encoding.Default; mess.Headers["Content-type"] = "text/plain; charset=windows-1251";
Если захотите прикрепить к письму еще и вложения:
//Вложение для письма //Если нужно не одно вложение, для каждого создаем отдельный Attachment Attachment attData = new Attachment(@"D:\att.zip"); ... //прикрепляем вложение mess.Attachments.Add(attData);
Вот и все. В результате получаем на адресс «to» письмо от «from».
SendingMail.rar (19,5 KiB, 2 700 закачек)
Спасибо большое:)
А как отследить процесс загрузки вложения? Хотелось бы отображать время загрузки вложения перед отправкой.
Если с командной строки письма успешно отправляются, а при помощи php нет, попробуйте поэкспериментировать с четвертым параметром функции mail либо с настройкой sendmail_path, находящейся в файле php. Какой бы способ вы не выбрали, вам необходимо установить переменные SMTP, smtp_port, определяющие настройки сервера, отправляющего почту.
Жалко, что 2 года назад я это не прочитал :O(