Отправка почты в C#

C#   7 декабря 2012  Автор статьи:  

Специально для новичков я выкладываю код отправки сообщений на языке программирования C#. Он будет работать по протоколу smtp. Данный протокол поддерживается большинством почтовых серверов. В целом основными протоколами для отправки почты являются smtp, pop и imap. Если вам интересно, вы можете почитать о них поподробнее. Так как я буду в этой статье рассказывать только об smtp, то я перечислю некоторые smtp сервера:

  • smtp.yandex.ru
  • smtp.mail.ru

Так что если у вас есть email на одном из этих почтовых серверов, то вы можете отправлять через них почту. Для отправки почты мы будем использовать класс System.Net.Mail. На основе этого класса я написал функцию, которая будет принимать на вход ваш логин и пароль от почты, адрес отправителя, тему сообщения и само тело письма, также я еще добавил флаг Multy, который поможет почтовикам понять является ли ваша почта массовой рассылкой или нет. Если вы собирается отправлять почту большому количеству клиентов, то выставите данный флаг в true. В данном коде я принимаю тело письма как html. Таким образом, вы кроме текста в письмо можете засунуть любое оформление, которое подойдет вашей компании. Следует понимать,что при написании такого кода существует множество ограничений, которые следует учитывать. А именно, не следует использовать css стили, вместо них желательно использовать style. Кроме этого, картинки с удаленных ресурсов многие почтовые программы загружают не сразу, так что вы должны продумать, как ваше сообщение будет выглядеть без картинок. Кроме этого не используйте скрипты, для генерации оформления письма. Программная отправка почты дает вам возможность автоматизировать процесс отправки и получение писем. Одно из самых частых использования программной отправки писем, это подтверждение e-mail и восстановление пароля. Приведем пример кода, о котором говорилось выше:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;

namespace CybernTools
{
public class Mail
{
private string smtp = "smtp.yandex.ru";
private string from = "info@cybern.ru";
private string subject = "";
private string to = "";
private string body = "";
private string login = "";
private string password = "";

public void Send(string login, string password, string sendTo, string subject, string body, bool isMulty)
{
this.from = login;
this.login = login;
this.password = password;
this.to = sendTo;
this.body = body;
this.subject = subject;
SmtpClient smtpServer = new SmtpClient(smtp, 25);
smtpServer.Credentials = new NetworkCredential(login, password);
if (isMulty)
{
smtpServer.Send(GetMultyMessage());
}
else
{
smtpServer.Send(GetMessage());
}
}
private MailMessage GetMessage()
{
MailMessage Message = new MailMessage();
Message.From = new MailAddress(login);
Message.To.Add(new MailAddress(to));
Message.Subject = subject;
Message.IsBodyHtml = true;

Message.Body = body;
return Message;
}
private MailMessage GetMultyMessage()
{
MailMessage Message = GetMessage();
Message.Headers.Add("Precedence", "bulk");//массовая рассылка
return Message;
}
}
}

Научиться программировать

  • на Delphi

  • на Java

  • на C++