Главная страница » Статьи и уроки » C# статьи » Отправка E-mail с помощью C#
Опрос
Какие статьи добавлять?
Выделенные и виртуальные серверы в Европе

Отправка E-mail с помощью C#

Автор: administrator Дата: 13-01-2015, 02:13 Категория: Статьи и уроки / C# статьи
В данной статье продемонстрировано как средствами языка C# и платформы .NetFramework можно организовать отправку сообщений на e-mail. Очень часто приходится сталкиваться с отправкой электронных писем из программного кода. За примерами далеко ходить не нужно. Данная статья является подсказкой и не открывает ничего нового, но прежде чем её писать, посмотрел похожее в интернете и был довольно удивлён тому, что почти везде предлагают или не работающее или устаревшее решение, либо просто написано неграмотно.

Постановка задачи
Целью статьи является попытка реализовать работу с SMTP сервером с помощью средств языка C#. Программа должна осуществлять доступ к SMTP серверу, обращаясь к нему для отправки e-mail сообщений прямо из кода программы на выбраные e-mail адреса.

Немного теории
SMTP (англ. Simple Mail Transfer Protocol — простой протокол передачи почты) — это сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP.

SMTP используется для отправки почты от пользователей к серверам и между серверами для дальнейшей пересылки к получателю. Для приёма почты, почтовый клиент должен использовать протоколы POP3 или IMAP. Работа с SMTP происходит непосредственно на сервере получателя. Поддерживает функции: установление соединения, аутентификация, передача данных.

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

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



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

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


Для отправки письма в .NetFramework средствами языка C# существуют классы MailMessage и SmtpClient, а если необходимо к письму прикрепить файл, то Вам поможат методы класса Attachmen. Итак, посмотрим на примере как именно это всё реализовуется:

//Авторизация на 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("адрес отправителя");
message.To.Add(new MailAddress("адрес получателя"));
message.Subject = "Заголовок";
message.Body = "Сообщение";
 
Smtp.Send(Message);//отправка


В данном примере в качестве службы для отправки почты использовалась mail.ru. Если Вы хотите использовать yandex или gmail, то нужно поменять адресс SMTP-сервера и порт для отправки:
Yandex - SMTP-сервер: smtp.yandex.ru; Порт: 25;
Gmail - SMTP-сервер: smtp.gmail.com; Порт: 58;

Если у вас почтовый ящик на сервисе mail.ru заканчивается на inbox.ru, list.ru или bk.ru, то соответственно меняется и адрес SMTP-сервера (smtp.inbox.ru, smtp.list.ru и smtp.bk.ru).

Как вы видите, для того, чтобы использовать любой другой почтовый сервис в ваших программах, необходимо только выяснить адрес SMTP-сервера и порт, а также правила авторизации. Необходимо также помнить, что практически все сторонние почтовые сервисы накладывают лимиты на количество отправленных писем в период времени.

Прикрепить файл к письму особого труда не составит, всего пару строк добавить и всё:

//Прикрепляем файл
string file = "путь к файлу";
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);



Пример простого Email клиента на C#
Send Email
  • Не нравится
  • 0
  • Нравится
Просмотров: 7 045 Напечатать Жалоба
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
Написать комментарий
Ваше Имя:
Ваш 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
Код: Кликните на изображение чтобы обновить код, если он неразборчив
Введите код: