Сайт разработчика Александр Климова

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Пишите, Шура, пишите

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

Помню, что на Visual Basic 6.0 это было достаточно нетривиальная задача. В .NET Framework это сделать легко при помощи класса System.Net.Mail. Набросаем на форму несколько текстовых полей, кнопки и метки. Вся работа умещается в событии Click для кнопки.

Форма для отправки письма

using System.Net.Mail;

private void button1_Click(object sender, EventArgs e)
{
    // если поле Кому пустое
    if (txtTo.Text == string.Empty)
    {
        MessageBox.Show("Пожалуйста, введите электронный адрес");
        return;
    }

    SmtpClient client = new SmtpClient("mail.microsoft.com");
	// подставьте свои значения учетной записи
    client.Credentials = new System.Net.NetworkCredential("klimov@microsoft.com", "cfvsqevysqlf?");
    MailAddress from = new MailAddress("klimov@microsoft.com", "Разработчик Климов", Encoding.UTF8);
	// кому отправляем письмо (электронный адрес)
    MailAddress to = new MailAddress(txtTo.Text);
	
    MailMessage message = new MailMessage(from, to);
    message.Body = txtMessage.Text;
    message.BodyEncoding = Encoding.UTF8;

    message.Subject = txtSubject.Text;
    message.SubjectEncoding = Encoding.UTF8;
    try
    {
        client.Send(message);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    message.Dispose();
}

Проверяем, заполнено ли поле Кому. Если нет, то показываем сообщение и завершаем выполнение процедуры. Далее создаем экземпляр объекта SmtpClient, который позволяет отправлять письма по протоколу SMTP. Вам необходимо указать имя почтового сервера (корпоративного или, например, mail.ru).

Затем необходимо указать свои настройки учетной записи, которые вы используете при работе с почтовым сервером - имя пользователя, пароль, а также домен (при необходимости).

Теперь нужно создать два экземпляра объекта MailAddress, который представляет электронный адрес. Первый – это адрес отправителя, второй – адрес получателя.

Наконец, создаем сообщение (класс MailMessage) и заполняем его параметры. В примере показан минимум, который нужен для письма, в реальном приложении его можно расширить за счет прочих полей (например, кому отсылать копии – параметр CC и т.д.).

Последнее действие – это отправка письма в блоке try-catch и очистка занимаемых экземпляром MailMessage ресурсов вызовом метода Dispose().

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

Как видите, ничего сложного. Удачного вам программирования!

При подготовке статьи использовались материалы с сайта C#. Как отправить электронное письмо

Реклама