Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »
реклама
Пластиковая труба водопроводная.

Почтовая рассылка

Подписчиков: 11829
Последний выпуск: 19.06.2015

Класс для отправки сообщений по E-mail

Автор: Александр Уваров
22 ноября 2012 года

Класс Mail предназначен для отправки сообщений на E-Mail сервер с помощью протокола SMTP (Simple Mail Transfer Protocol).

Конструктор класса

public Mail (string Host, int Port, string User, string Password, string From, string To, string CC = “”, int CodePage = 20866);

Инициализирует параметры соединения с почтовым сервером, который позволяет отправлять сообщения по протоколу SMTP (Simple Mail Transfer Protocol).

Параметры:

  • Host – имя или IP адрес почтового сервера;
  • Port – номер порта почтового сервера;
  • User – имя учетной записи;
  • Password – пароль учетной записи;
  • From – адрес отправителя электронной почты;
  • To – адрес получателя электронной почты;
  • CC – список адресов получателей копии электронной почты, если список пуст, то передается пустая строка;
  • CodePage – кодовая страница, определяет кодировку параметров From, To, по умолчанию 20866 (koi8-r).

Формат строки представления адреса получателя и отправителя:

“<E-Mail>[,<DisplayName>]”

Формат строки представления, списка получателей копии электронной почты:

“[<E-Mail[,<E-Mail>, … , <E-Mail>]”

гдеб

  1. E-Mail – адрес электронной почты;
  2. DisplayName - отображаемое имя.

Методы класса

public bool MailSend (string Subject, string Body, string AttachFile)

Отправляет указанное сообщение на сервер SMTP, для доставки получателем.

Параметры:

  • Body – сообщение;
  • Subject – тема сообщения;
  • AttachFile – полное имя вложенного файла в сообщение или пустая строка, если его нет.

Возвращаемый результат:

  • True – сообщение отправлено успешно или False, если произошла ошибка.

public void MailClose()

Закрывает текущее соединение с почтовым сервером по протоколу SMTP. Освобождает все занятые ресурсы.

Свойства класса

public string Err { get; }

Возвращает строку с сообщением об ошибке, возникшей при отправке почтового сообщения, или пустую строку, если ошибок нет.

Пример использования класса Mail

Код:
//****************************************
// Пример использования класса Mail
//****************************************

using System;
using SM;

...

// создаем объект

Mail oSM = new Mail("67.13.256.48", 25, "ssk/cnt_notif", "adm",
 "Sidorov@fsk.sdd,Сидоров Иван Иванович",
 "Petrov@fsk.sdd,Петров Алексей Николаевич");

// отправляем сообщение

if (oSM.MailSend("Тест", "Тестовое сообщение", "d:\test.txt"))
 Console.WriteLine("Сообщение отправлено");
else
 Console.WriteLine("Ошибка! " + oSM.Err);

// закрываем соединение и освобождаем занятые ресурсы
oSM.MailClose();
...
 

Код класса

Код:
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;
    }
  }

}

}

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

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог