воскресенье, 9 марта 2014 г.

Send email c#


http://stud-work.ru/index.php/c-sharp-mail-send-prostoj-primer-c-otpravka-email

C# mail send. Простой пример: C# отправка почты

C# mail sendСегодня мы поговорим о том, как отправить email, используя язык программирования C#. В .Net FrameWork, начиная с версии 1.1, есть встроенные средства по отправке писем.
Классы по работе с email находятся в пространстве имен System.Net.Mail. Они реализуют такие полезные функции, как:
  • отправка почты, в том числе нескольким адресатам;
  • отправка копии и скрытой копии письма;
  • вложение файла к письму;
  • использование HTML-кода в теле письма.
В данной статье рассмотрим основные классы работы с mail и напишем небольшой код отправки письма C# mail send. В качестве SMTP-сервера будем использовать сервер GMail. Он использует SSL протокол, обеспечивающий безопасный способ соединения между клиентом и сервером.
В C# отправка почты в основном реализуется двумя классами: MailMessage и SmtpClient. MailMessage содержит сведения о заголовке и теле письма, отправителе и получателях. SmtpClient хранит информацию об SMTP-сервере: хост, порт, наличие SSL и т.д.

C# mail send

Рассмотрим основные классы работы с письмами в C#. Пространство имен System.Net.Mail содержит несколько нужных нам классов:
MailMessage
Основной класс работы с письмами в .Net Framework. Мы будем использовать следующие свойства класса:
  • From: адрес отправителя в виде экземпляра класса MailAddress;
  • To: коллекция адресов получателей;
  • Subject: тема или заголовок письма типа String;
  • Body: Тело письма, т.е. само сообщение;
  • Attachments: коллекция присоединенных к письму файлов. При необходимости вложить в письмо файл, нужно добавить его Attachment в список присоединенных файлов Attachments.
SmtpClient
Позволяет отправлять email по протоколу SMTP (Simple Mail Transfer Protocol). Воспользуемся SMTP-сервером от Google smtp.gmail.com. Нам понадобятся следующие свойства класса:
  • Host: имя SMTP-сервера для отправки email;
  • Port: порт, используемый для SMTP-транзакций. По умолчанию равен 25, что соответствует незашифрованному каналу. Google свои каналы шифрует, поэтому мы будет использовать порт 587;
  • EnableSsl: показывает, используется ли SSL протокол для шифрования трафика. Google требует протокол SSL, поэтому установим это свойство в True;
  • Credentials: предоставляет учетные данные для проверки подлинности на основе пароля;
  • DeliveryMethod: метод обработки исходящих сообщений электронной почты. У нас этот параметр будет равен SmtpDeliveryMethod.Network, что означает передачу email по сети на SMTP-сервер.
Мы будем использовать метод Send для отправки нашего письма на SMTP-сервер для дальнейшей доставки.
Attachment
Класс Attachment реализует присоединение файла к письму. Если хотите переслать файл, нужно добавить Attachment вашего файла в список MailMessage.Attachments. В качестве параметра в класс Attachment можно передать имя файла или его Stream.
При отправке письма с присоединенным файлом желательно сжимать его в архив. Это увеличит скорость передачи. К тому же, если передать в одном письме тысячи файлов по отдельности, то получатель увидит не очень приятное зрелище: огромный список присоединенных файлов. Я использую для сжатия бесплатный архиватор 7-zip. Здесь можно посмотреть пример добавления в архив 7-zip на C#.
Пример: c# отправка почты
Не забываем подключить сборку System.Net.Mail. На C# отправка почты сводится к нескольким строчкам кода:
using System;
using System.Net;
using System.Net.Mail;
/// <summary>
/// Отправка письма на почтовый ящик C# mail send
/// </summary>
/// <param name="smtpServer">Имя SMTP-сервера</param>
/// <param name="from">Адрес отправителя</param>
/// <param name="password">пароль к почтовому ящику отправителя</param>
/// <param name="mailto">Адрес получателя</param>
/// <param name="caption">Тема письма</param>
/// <param name="message">Сообщение</param>
/// <param name="attachFile">Присоединенный файл</param>
public static void SendMail(string smtpServer, string from , stringpassword,
string mailto, string caption, string message, string attachFile = null)
{
try
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress(from);
mail.To.Add(new MailAddress(mailto));
mail.Subject = caption;
mail.Body = message;
if (!string.IsNullOrEmpty(attachFile))
mail.Attachments.Add(new Attachment(attachFile));
SmtpClient client = new SmtpClient();
client.Host = smtpServer;
client.Port = 587;
client.EnableSsl = true;
client.Credentials = new NetworkCredential(from.Split('@')[0], password);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Send(mail);
mail.Dispose();
}
catch (Exception e)
{
throw new Exception("Mail.Send: " + e.Message);
}
}
Пример вызова C# mail send (пробел перед именами ящиков убрать):
SendMail("smtp.gmail.com", " mymail@gmail.com", "myPassword", " yourmail@gmail.com", "Тема письма", "Тело письма", "C:\\1.txt");

Комментариев нет:

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