пятница, 25 ноября 2011 г.

Delphi: отправка электронного письма с консольного приложения.


Задача по отправке почты из консольного приложения согласно переданным при запуске параметрам решается очень просто. Цель: написание маленького модуля который бы вызывался  внешней программой, передавал ей параметры на отправку электронного сообщения и завершал свою работу с целью уведомления клиента о событии. При этом работа самого модуля для пользователя должна быть незаметной.
Итак, рассмотрим как происходит отправка сообщений адресатам используя консоль.
В первую очередь необходимо прописать в email.ini параметры отправки сообщения:
[SETTINGS]
SERVER=smtp.ya.ru // Сервер для отправки сообщений
PORT=25           // Порт сервера, если отличается от 25-го - меняем
USNAME=mail@ya.ru // Имя пользователя для авторизации (если она есть)
PASS=12345        // Пароль
FROM=ya@yandex.ru // Указываем что будет отображаться в строке "От:"

Дальше обычно в консоли, либо внешней программы при помощи Shell Execute пишем вызов своего модуля:
email.exe mail1@yandex.ru;mail2@gmail.com "Tema" "Text message"
где mail1@yandex.ru;mail2@gmail.com - список адресов получателей, разделяються точкой с запятой, "Tema" - тема сообщения, "Text message" - текст сообщени.
Обращаю внимание что каждый параметр разделяется пробелом, поэтому если в теме письма или сообщении более одного слова их обязательно нужно брать в двойные кавчки.
Так же хочу обратить внимание на размер файла, дело в том что для нормальной работы самого модуля необходимо наличие библиотек, поскольку задача стояла "Должен работать на любом компьютере" то пришлось включить библиотеки в исполнительный файл, кто не знает, это делается убиранием галочки Check Box в меню: Project-->Options-->Packages-->Build with runtime packages. Если библиотеки не включать то исполнительный файл будет около 20 Кб.

Исходники для Delphi 7/2009/2010 можно скачать здесь.