Отправка E-mail с помощью 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. Итак начнём, для начало нужно подключить пространства имён:
Для отправки письма в .NetFramework средствами языка C# существуют классы MailMessage и SmtpClient, а если необходимо к письму прикрепить файл, то Вам поможат методы класса Attachmen. Итак, посмотрим на примере как именно это всё реализовуется:
В данном примере в качестве службы для отправки почты использовалась 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-сервера и порт, а также правила авторизации. Необходимо также помнить, что практически все сторонние почтовые сервисы накладывают лимиты на количество отправленных писем в период времени. Прикрепить файл к письму особого труда не составит, всего пару строк добавить и всё:
Пример простого Email клиента на C# |
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.