Отправка e-mail средствами C#

В данной статье я хочу рассказать вам, как с помощью C# и .NET Framework осуществить отправку электронной почты. Мы будем отправлять письмо через определенный smtp сервер, который требует авторизацию. Итак, присутпим.

Создадим консольное приложение. Для работы с сетью и почтой необходимо подключить пространства имен:

 
using System.Net;
using System.Net.Mail;

Теперь займемся непосрдественно отправкой почты:

 

static void SendMail()
{
    //smtp сервер
    string smtpHost = "smtp.server.net";
    //smtp порт
    int smtpPort = 25;
    //логин
    string login = "login";
    //пароль
    string pass = "pass";

    //создаем подключение
    SmtpClient client = new SmtpClient(smtpHost, smtpPort);
    client.Credentials = new NetworkCredential(login, pass);

    //От кого письмо
    string from = "from@server.net";
    //Кому письмо
    string to = "to@server.net";
    //Тема письма
    string subject = "Письмо от C Sharp";
    //Текст письма
    string body = "Привет! \n\n\n Это тестовое письмо от C Sharp";

    //Создаем сообщение
    MailMessage mess = new MailMessage(from, to, subject, body);

    try
    {
        client.Send(mess);
        Console.WriteLine("Message send");
    }
    catch(Exception ex)
    {
        Console.WriteLine(ex.ToString());
        Console.ReadKey();
    }
}

Тело письма и заголовок будут созданы и отослаы в кодировке UTF-8. Если необходимо отослать письмо в кодировке windows-1251 необходимо вручную прописать заголовок:

mess.SubjectEncoding = Encoding.Default;
mess.BodyEncoding = Encoding.Default;
mess.Headers["Content-type"] = "text/plain; charset=windows-1251";

Если захотите прикрепить к письму еще и вложения:

//Вложение для письма
//Если нужно не одно вложение, для каждого создаем отдельный Attachment
Attachment attData = new Attachment(@"D:\att.zip");
...
//прикрепляем вложение
mess.Attachments.Add(attData);

Вот и все. В результате получаем на адресс “to” письмо от “from”.

[download id=”10″]

4 Comments

  1. А как отследить процесс загрузки вложения? Хотелось бы отображать время загрузки вложения перед отправкой.

  2. Если с командной строки письма успешно отправляются, а при помощи php нет, попробуйте поэкспериментировать с четвертым параметром функции mail либо с настройкой sendmail_path, находящейся в файле php. Какой бы способ вы не выбрали, вам необходимо установить переменные SMTP, smtp_port, определяющие настройки сервера, отправляющего почту.

  3. Жалко, что 2 года назад я это не прочитал :O(

Comments are closed.