Главная страница » Статьи и уроки » C# статьи » Простой пример: C# отправка почты
Опрос
Вы занимаетесь разработкой сайтов?
Выделенные и виртуальные серверы в Европе

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

Автор: administrator Дата: 12-01-2015, 20:33 Категория: Статьи и уроки / C# статьи
Сегодня мы поговорим о том, как отправить 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 , string password,
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");
  • Не нравится
  • -1
  • Нравится
Просмотров: 3 973 Напечатать Жалоба
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
Написать комментарий
Ваше Имя:
Ваш E-Mail:
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Код: Кликните на изображение чтобы обновить код, если он неразборчив
Введите код: