Отправка сообщений на почту в Visual Studio 2013 C++


Казалось бы, зачем изобретать велосипед? Есть множество программ, которые могут отправлять письма на электронную почту: как платных, так и бесплатных. В этих программах можно отправлять письма не одному, а сразу многим получателям. Однако, все же добавление получателей происходит вручную, адреса их вбивать муторно, особенно если их не один десяток. А если требуется регулярно отправлять сотни писем? Причем я не говорю о спаме, а имею в виду совершенно легальные рассылки?

В этом случае на помощь может придти специальная программа. В этой статье не будет такой целой программы, а будет небольшая программа, которая просто отправляет одно письмо на один адрес. При этом происходит авторизация по smpt, то есть письмо отправляется не от неизвестно откуда, а со вполне реального почтового ящика. В примере используется почта mail.ru.

Итак, вот текст программы.

#include "stdafx.h"
#using <System.dll>
using namespace System;
using namespace System::Net;
using namespace System::Net::Mail;
using namespace System::Net::Mime;
using namespace System::Threading;
using namespace System::ComponentModel;

int main()
{

	SmtpClient ^Smtp = gcnew SmtpClient("smtp.mail.ru", 25);
	Smtp->Credentials = gcnew NetworkCredential("ваша_почта@mail.ru", "ваш_пароль");
	Smtp->EnableSsl = true;

	MailMessage ^Message = gcnew MailMessage();
	Message->From = gcnew MailAddress("ваша_почта@mail.ru");
	Message->To->Add(gcnew MailAddress("почта_получателя@yandex.ru"));
	Message->Subject = "Заголовок";
	Message->Body = "Сообщение";

	Smtp->Send(Message);

}
Стоит сразу оговориться, какие условия должны быть соблюдены: проект в Visual Studio 2013 создается не только для C++, он еще должен быть консольным, поддерживать CLR-среду. Рассмотрим подробнее, что происходит и в какой строке в данной программе C++, которая отсылает сообщение на выбранный ящик электронной почты.

С 1-й по 8-ю строчки идет подключение заголовочных файлов и пространства имен. 13 строка инициализирует smpt-сервер. Для яндекса и гугла используются свои: smtp.yandex.ru и smtp.google.ru соответственно. Число 25 в этой строке - это порт. В том случае, если ваш провайдер блокирует это порт или не получается соединиться, то можно попробовать такие варианты 465 или 587. В 14 строке необходимо ввести свой ящик электронной почты (с которого пойдет письмо) и пароль от этого ящика.

Особое внимание обращаем на 15 строку - в этой подключается безопасный протокол ssl. Это в обязательном порядке требуется для яндекса и майла. 17 строка создает сообщение; в 18 - обратный адрес; в 19 - адрес получателя; 20 - заголовок письма; 21 - сообщение; в 22 строке производится отправка. Если после запуска программы не выскакивает никаких ошибок, ничего не происходит, то все нормально - проверяйте ящик получателя.

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

Любые вопросы по программам на C++, java, скриптам на java script и php, созданию сайтов и верстке, вы можете задать по почте up777up@yandex.ru или стучитесь в скайп up777up2. За очень умеренную плату я вам с удовольствием помогу.

Дополнение

Один из посетителей блога задал вопрос: а как прикрепить файл в данной программе? Ответ прост: надо добавить несколько строк кода в приложение:

String^ att = L"att.xls";
Attachment^ dan = gcnew Attachment(att, MediaTypeNames::Application::Octet);
Message->Attachments->Add(dan);
В первой строке определяем прикрепляемый файл, во второй определяем данные и приказываем не интерпретировать их (заголовок Content-Type протокола MIME) и в третьей - добавляем его к письму. Вот и все.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, си плюс плюс, отправка письма, Visual Studio 2013




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Измерительное оборудование Testo
Как парсить сайты с помощью CsQuery
Шифрование файлов в Windows