Пишем программу рассылки электронной почты

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

Вероятно вам, так же как и мне, будет не интересно предложение купить по невысокой цене вагон пшеницы, но когда предложение сделано нескольким миллионам получателей электронной почты, всегда найдется несколько человек, которые купят рекламируемый спамером товар или услугу. В итоге доволен спамер, доволен продавец, доволен покупатель – свою выгоду они получили. Довольны продавцы и производители антиспамовых программ, так как чем больше спамеров, тем больше спрос на средства защиты от спама. Недовольны только получатели не запрошенных сообщений, так как именно то, что пользователь не давал согласия на получение полученной информации отличает спам от цивилизованных почтовых рассылок. Спамеры неистребимое зло сети, но замечу, что некоторые пользователи сети Интернет, если говорить честно, прямо и без прикрас тоже “деятели” редкостные. Вопиющая техническая, и не только, безграмотность таких “деятелей” компенсируется повышенной воинственностью, сверхраздражительностью и стремлением на всех и каждого навесить тот или иной позорный ярлык. Пришедшее письмо от сервиса сразу, не читая, объявляют спамом, рассказ о том, как самому создать собственный инструмент для рассылки электронных сообщений - пособие для спамеров, однозначно!

Когда пользователь сети Интернет регистрируется на сайте Сети, указывая свой электронный адрес для получения логина и пароль к закрытой части сайта, то логично, что через некоторое время после подписки пользователь будет получать на свой почтовый ящик информацию о деятельности сервиса. Обычно это явно указано в правилах работы с сайтом, которые так же, как правило, никто не читает! Если пользователь подписался на получение информации по электронной почте добровольно, если пользователю предоставлены средства для описки от рассылки, то такая рассылка совсем не рассылка спама, а источник полезной и важной для пользователя информации. Замечу, что еще одна цель периодической рассылки новостей сервисом, кроме донесения до пользователей информации, выявление неработающих почтовых адресов с последующим исключением из списка сервиса “мертвых” пользователей. Вопрос об удалении учетных записей, каждый владелец сервиса решает самостоятельно. Например, я в обязательном порядке удаляю учетную запись пользователя моего сайта “Свой бизнес в сети Интернет” (http://aiv.spb.ru), если электронный адрес пользователя не доступен или пользователя не интересует получение новостной рассылки сайта (на сайте много информации доступно и без прохождения процедуры регистрации).

Программы рассылки почты: где взять готовые?

Когда необходимо отправить одно письмо или десяток другой практически идентичных, то проще всего разослать письма с помощью той почтовой программы, с которой обычно работаете. Необходимость в специальных средствах рассылки возникает тогда, когда необходимо отправлять много писем с определенной периодичностью. В Интернет представлены разные профессиональные продукты, предназначенные для организации подписок и проведения почтовых рассылок. Рекомендую две программы AutoResponder Unlimited и Express Mail Server (http://aiv.22usd.com/products.php - можно купить пакет программ за $22). Готовые профессиональные средства ведения рассылок эффективны, когда рассылка создается и ведется с использованием этих программ. Но готовые программы рассылки трудно приспособить в случае, если уже есть файлы с информацией о пользователях определенного нестандартного формата. Например, информация о пользователях моего сайта хранится в файле в виде:

Код : 1153 Логин : aiv021068
E-mail:aiv123@mail.ru
Телефон :
Контактное лицо : Игорь
время доб./изм.: 2006-04-28 16:24:58 / 2006-04-28 16:24:58

Файл содержит несколько тысяч постоянно обновляемых записей. Для организации рассылки по списку мной были рассмотрены две возможности – или написать конвертер для преобразования файла к формату уже существующих средств рассылки, либо самостоятельная разработка программы, понимающей формат моего файла. Второй вариант счел более удобным и сейчас расскажу, как собственными силами написать программу рассылки информации по электронной почте.

Для написания программы я воспользовался средой визуального программирования С++ Builder (версия 6.0) и компонентом для работы с электронной почтой NMSMTP, разработанным фирмой NetMaster's LLC (http://www.netmastersllc.com/home/). Набор компонентов этой фирмы для написания приложений работающих в сети, можно найти на вкладе FastNet палитры компонентов С++ Builder. Замечу, что вкладка присутствует и в Delphi версии 5.0, но отсутствует в версии 7.0. На сайте производителя компоненты можно купить отдельно, например, для упомянутого Delphi 7.0 всего за $199.95. Но, ориентируясь на широкий круг читателей, я решил, что лучше всего продемонстрировать разработку программы, которую можно написать, воспользовавшись имеющимися в стандартной поставке средствами, а не искать где-то необходимые компоненты. Предлагать вариант программы на Delphi версии 5.0, когда есть 7.0 вроде не хорошо, так как версия старая (но для данной программы это абсолютно не принципиально). Замечу что, программу обрабатывающую большие объемы строковой информации, удобней разрабатывать все же на языке паскаль, а не на c++ (во всяком случае, не профессиональному программисту). Операция конкатенации (сложения) строк s:=s1+s2; на паскале более удобна и понятна, чем использование функции strcpy и разных ее аналогов для той же цели в с++. Знатоки могу заметить, что если писать программу для рассылки почты, то лучше воспользоваться каким либо языком разработки скриптов (например, php). Опять же, выбор был сделан с учетом интересов широкого круга читателей – программа, которую напишем, достаточно проста и работает с любого компьютера, подключенного к сети. А вот аргумент, что рассылать лучше с сервера провайдера, на котором будет выполняться установленный скрипт, для меня не актуален, так как компьютер и так подключен к сети по скоростному каналу без каких либо ограничений по объему передаваемого трафика. Воспользовавшись рассмотренной программой, пользователь, подключившийся к сети по обычному модему, сможет разослать несколько тысяч сообщений за полчаса-час, в то время как у меня уходит на эту же операцию несколько минут, вот и вся разница и нет проблем разрешит ли провайдер установить на его сервере скрипт или же нет. Замечу, что хотя моя программа в виде исходников выложена в сеть (http://www.aiv.spb.ru/ufiles/mail.zip), но использовать программу по прямому назначению без доработки, скорее всего, никто кроме меня не сможет, так как информация о пользователях сайта сохраняется в довольно редком формате. Другое дело, что исходный текст программы с минимальными изменениями можно использовать для написания собственной программы рассылки.

Программа рассылает сообщения по списку, а за основу был взят пример, приведенный в типовых примерах, поставляемых вместе с С++ Builder - /CBuilder6/Examples/FastNet/SMTP/smtpdemo.bpr.

NMSMTP и SMTP Demo

Рассмотрим программу SMTP Demo, использующую для рассылки почты компонент NMSMTP. Перед отправкой электронной почты программа должна соединиться с сервером:

NMSMTP1->Host = Edit1->Text;
NMSMTP1->Port = StrToInt(Edit2->Text);
NMSMTP1->UserID = Edit4->Text;
NMSMTP1->Connect();

Поле Edit1->Text содержит информацию об имени хоста. Хост smtp.wplus.ru – имя компьютера, который получает отправляемые письма и раздает их дальше получателям.
Port = номер порта. Стандартно порт для отправки электронной почты имеет номер 25, который, впрочем, может быть изменен администратором хоста.
UserID = - код (идентификатор) пользователя, например, aiv1.

Сразу можно указать значения еще двух полей:

NMSMTP1->PostMessage->FromAddress = Edit6->Text;
NMSMTP1->PostMessage->FromName = Edit5->Text;

FromAddress = - адрес отправителя, например, aiv1@mail.wplus.net;
FromName = - имя отправителя, например, Igor Anantchenko.

Замечу, что имя и адрес отправителя можно указать любые, в том числе и несуществующие. Программа эту информацию никак проверить не может, но такую проверку может выполнить (и заблокировать отправляемое вами письмо) специальное программное обеспечение, установленное на хосте, принимающим вашу почту. Метод NMSMTP1->Connect(); устанавливает соединение с сервером. После того, как почта отправлена, необходимо отсоединиться от сервера – пишем: if (NMSMTP1->Connected) NMSMTP1->Disconnect(); - если соединение установлено, то, завершая работу c хостом, разорви соединение, а если соединения нет, то ничего делать не надо. Рассмотрим подробнее поле компонента PostMessage, включающего в себя множество подполей, из которых кроме, уже названных ранее подполей FromAddress и FromName, назову несколько наиболее важные:

Subject – тема письма,
ToAddress – получатель письма (его электронный адрес),
Attachments – в этом поле можно указать путь к одному или к нескольким файлам, которые будут отправлены вместе с письмом,
Body - тело (текст) письма.

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

Программа для рассылки почты по списку. Подводим итоги

Информационное письмо для каждого пользователя составляется индивидуально - в шаблон добавляется учетная информация пользователя (все кроме пароля). Можно обойтись и без этого, но лучше получать письмо, в котором к тебе обращаются персонально по имени, чем обезличено. Кроме того, некоторым пользователям совсем не лишне напомнить учетную информацию, чтобы избежать обвинений в рассылке спама (есть и такие, кто не помнит, на каких сайтах регистрировались вчера, а не то, что несколько месяцев назад!).

Текст программы рекомендую посмотреть полностью, а не только приведенный выше фрагмент, отвечающий за внесение изменений в трафарет письма и его отправку. Замечу, что некоторые конструкции приведенного выше фрагмента можно организовать более изящно и рационально, но я предпочел сделать их максимально простыми. Концепция структурного и объектно-ориентированного программирования полагает полный отказ от оператора goto. Можно было бы его не использовать вовсе, но тогда сократится не только размер фрагмента, но и число читателей, понимающих, как он работает.

Подводя итоги, отмечу, что я не ставил целью научить читателей программированию, но хотел показать, что разработать программу отсылки электронной почты, обладая минимальными знаниями в области программирования и готовым примером, очень просто. И, как вы видели, программы для рассылки сообщений можно использовать не только для рассылки спама, но и для того, чтобы сделать работу пользователей в сети Интернет максимально удобной и эффективной. Если кому из читателей будут нужны программы AutoResponder Unlimited и Express Mail Server, то можете обращаться ко мне - любой зарегистрированный пользователь моего сайта может загрузить эти программы бесплатно. На этом все, желаю удачи!

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Дата публикации:
Автор публикации: