using System; using System.Net; using System.Net.Mail; using System.Net.Mime; namespace SM { // Класс для отправки сообщений на E-Mail, // с помощью протокола SMTP (Simple Mail Transfer Protocol) public class Mail { private SmtpClient Client; private MailMessage Message; private string Error; //************************************************************* //* Function: Mail //* Notes: Конструктор класса //* public Mail (string Host, int Port, string User, string Password, string From, string To, string CC = "", int CodePage = 20866) { int Index = 0; MailAddress from; MailAddress to; NetworkCredential Credentials = new NetworkCredential(User, Password); this.Client = new SmtpClient(Host, Port); this.Client.Credentials = Credentials; Index = From.IndexOf(','); if (Index >= 0) { from = new MailAddress(From.Substring(0, Index), From.Substring(Index + 1), System.Text.Encoding.GetEncoding(CodePage)); } else { from = new MailAddress(From); } Index = To.IndexOf(','); if (Index >= 0) { to = new MailAddress(To.Substring(0, Index), To.Substring(Index + 1), System.Text.Encoding.GetEncoding(CodePage)); } else { to = new MailAddress(To); } this.Message = new MailMessage(from, to); if (!String.IsNullOrEmpty(CC)) { this.Message.CC.Add(CC); } this.Error = ""; } //*** End of Mail *********** //************************************************************* //* Function: MailSend //* Notes: Отправляет указанное сообщение Body на сервер SMTP для //* доставки получателем. // Subject - тема сообщения. //* AttachFile - полное имя вложенного файла в сообщение или //* пустая строка, если его нет. //* Функция возвращает true, если сообщение отправлено успешно или false, //* в любом другом случае. //* public bool MailSend (string Subject, string Body, string AttachFile) { Attachment data = new Attachment(AttachFile, MediaTypeNames.Text.Plain); this.Error = ""; this.Message.Subject = Subject; this.Message.Body = Body; this.Message.Attachments.Add(data); try { this.Client.Send(Message); } catch (Exception e) { this.Error = e.Message; return false; } this.Message.Attachments.Clear(); return true; } //*** End of MailSend *********** //************************************************************* //* Function: MailClose //* Notes: Закрывает текущее соединение с почтовым сервером по протоколу SMTP. //* Освобождает все занятые ресурсы. //* public void MailClose () { this.Client = null; this.Message.Dispose(); this.Message = null; } //*** End of MailClose *********** // получить ошибку при передачи сообщения public string Err { get { return this.Error; } } } }