Отправка сообщений на почту в 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Читайте также:
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.