Отправка E-Mail

Опубликовано 22 марта, 2009 в разделе Примеры на C#. Разместил Алексей(admin).

Отправить почту можно на прямую работая с SMTP сервером, отправляя ему команды, а можно воспользоваться готовыми библиотеками, которые делают то же самое. Ну есть ещё пару способов, но они не такие уж и интересные.

Помню раньше, на C++ я реализовывал отправку почты через сокеты, отправляя команды на SMTP сервер, если найду то выложу.

Существует одна проблема, дело в том, что все SMTP сервера требуют авторизации, для отправки почты, а некоторые ещё и требуют некоторую спецификацию, заключающую в том, что бы сначала получить почту, а потом только отправить. И порой бывает, что везде по разному. Работая напрямую с SMTP сервером будет достаточно сложно это учесть, поэтому, лучше воспользваться специальными библиотеками.

В Microsoft .NET Framework есть специальная библиотека, через которую и можно отправить электронную почту E-mail.

Итак начнём, для начало нужно подключить пространства имён

//E-mail using
using System.Web;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;

А вот уже и сама отправка, привёл пример, для отправки письма с вложением.

//Авторизация на SMTP сервере
SmtpClient Smtp = new SmtpClient("smtp.mail.ru", 25);
Smtp.Credentials = new NetworkCredential("login", "pass");
//Smtp.EnableSsl = false;
 
//Формирование письма
MailMessage Message = new MailMessage();
Message.From = new MailAddress("from@mail.ru");
Message.To.Add(new MailAddress("to@mail.ru"));
Message.Subject = "Заголовок";
Message.Body = "Сообщение";
 
         //Прикрепляем файл
         string file = "C:\file.zip";
         Attachment attach = new Attachment(file, MediaTypeNames.Application.Octet);
 
         // Добавляем информацию для файла
         ContentDisposition disposition = attach.ContentDisposition;
         disposition.CreationDate = System.IO.File.GetCreationTime(file);
         disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
         disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
 
         Message.Attachments.Add(attach);
 
Smtp.Send(Message);//отправка

Как видно, тут идёт отправка через почтовый SMTP сервер Mail.ru. Но у Mail.ru есть несколько серверов mail.ru, bk.ru, list.ru, поэтому если почтовый ящик для авторизации на bk.ru, то и в SmtpClient нужно писать smtp.bk.ru

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
Что можно ещё почитать:

Оставьте комментарий

You must be logged in to post a comment.