Отправка сообщений электронной почты из командной строки, с помощью утилиты Blat.exe

Как отправлять сообщения на электронную почту из командной строки? Можно привести массу ситуаций, когда необходимо выполнять данное действие. Например, для контроля выполнения различных регламентных заданий, резервного копирования баз данных и пр.

А поможет нам в этом маленькая, удобная и абсолютно бесплатная утилита Blat.exe.

1. Утилита Blat.exe

Скачать программу Blat можно с официального сайта или тут. На момент написания статьи последней была версия 3.1.1. В архиве 2 папки: full — непосредственно сама программа и docs — документация по программе. Для установки необходимо скопировать содержимое папки full в »C:\Windows\system32\» или в любую другую директорию, но в этом случае при вызове программы придется указывать путь к исполняемому файлу. Я в своем примере буду использовать второй вариант.

Есть возможность сразу создать профиль для отправки сообщений, для этого необходимо выполнить »Blat -install smtp.yoursite.tld Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.». Я не буду рассматривать данный режим работы. Подробнее читайте в файле «readme.txt».

2. Bat-файлы для отправки сообщений

Если открыть файл «syntax.txt» из прилагаемой документации, то можно увидеть огромный список команд, поддерживаемый данной утилитой, что говорит о ее богатых возможностях. Выделим основные и получим следующий «батник» send_email.bat (скачать все файлы в одном архиве) для отправки сообщения с адреса Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. на адрес Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.:

rem *** Путь к программе blat.exe ***
set file_blat=D:\blat\blat.exe
rem *** Путь к файлу с текстом сообщения ***
set file_text=D:\blat\report.txt rem
*** Путь к файлу для сохранения лога ***
set file_log=D:\blat\log_blat.txt

rem *** Данные отправителя ***

set from_server=smtp.mydomen.com
set from_port=25
set from_mail=Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.
set from_name=report
set from_pass=password

rem *** Данные получателя ***

set to_mail=Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.
set to_subject="Report"

rem *** Отправка сообщения ***

%file_blat% %file_text% -server %from_server%:%from_port% -f %from_mail% -u %from_name% -pw %from_pass% -to %to_mail% -s %to_subject% -log %file_log%


Таким образом, для отправки сообщения достаточно будет просто вызвать файл send_email.bat:



Можно доработать файл таким образом, чтобы адрес получателя и тема сообщения задавалась параметрами запуска. Вот содержимое такого bat-файла:

rem *** Путь к программе blat.exe ***
set file_blat=D:\blat\blat.exe
rem *** Путь к файлу с текстом сообщения ***
set file_text=D:\blat\report.txt
rem *** Путь к файлу для сохранения лога ***
set file_log=D:\blat\log_blat.txt

rem *** Данные отправителя ***
set from_server=smtp.mydomen.com
set from_port=25
set from_mail=Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.
set from_name=report
set from_pass=password

rem *** Отправка сообщения ***
%file_blat% %file_text% -server %from_server%:%from_port% -f %from_mail% -u %from_name% -pw %from_pass% -to %1 -s %2 -log %file_log%


И пример его запуска с параметрами: d:\blat\send_email.bat Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. "report"



Если получателей несколько, то при вызове утилиты можно указать текстовый файл с адресами получателей сообщения:

rem *** Путь к программе blat.exe ***
set file_blat=D:\blat\blat.exe
rem *** Путь к файлу с текстом сообщения ***
set file_text=D:\blat\report.txt
rem *** Путь к файлу для сохранения лога ***
set file_log=D:\blat\log_blat.txt
rem *** Путь к файлу с адресами получателей ***
set file_to=D:\blat\mail_list.txt
rem *** Тема сообщения ***
set to_subject="Report"

rem *** Данные отправителя ***
set from_server=smtp.mydomen.com
set from_port=25
set from_mail=Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.
set from_name=report
set from_pass=password

rem *** Отправка сообщения ***
%file_blat% %file_text% -server %from_server%:%from_port% -f %from_mail% -u %from_name% -pw %from_pass% -tf %file_to% -s %to_subject% -log %file_log%


Где файл mail_list.txt будет содержать адреса получателей разделенные переносом строки.

Ну и наконец, приведу пример файла, который я использую в данный момент. В нем все файлы находятся в директории с исполняемым bat-файлом, список адресов берется из файла, а тема письма задается параметром. Сделано это для того чтобы в зависимости от работы задания отсылать письма с разной темой. Например:

rem Резервное копирование завершилось успешно
call D:\blat\send_email.bat "Backup - OK"
rem Резервное копирование завершилось c ошибкой
call D:\blat\send_email.bat "Backup - ERROR"


Содержимое файла:

rem *** Основная директория файла ***
set dir=%~dp0
rem *** Путь к программе blat.exe ***
set file_blat=%dir%\blat.exe
rem *** Путь к файлу с текстом сообщения ***
set file_text=%dir%\report.txt
rem *** Путь к файлу для сохранения лога ***
set file_log=%dir%\log_blat.txt
rem *** Путь к файлу с адресами получателей ***
set file_to=%dir%\mail_list.txt

rem *** Данные отправителя ***
set from_server=smtp.mydomen.com
set from_port=25
set from_mail=Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.
set from_name=report
set from_pass=password

rem *** Отправка сообщения ***
%file_blat% %file_text% -server %from_server%:%from_port% -f %from_mail% -u %from_name% -pw %from_pass% -tf %file_to% -s %1 -log %file_log%


3. Заключение


Данные примеры не описывают все возможности программы Blat.exe. Она поддерживает сервера SMTP, NNTP, POP3 и IMAP, есть возможность хранить настройки в файле или в реестре, прикреплять вложения в тело письма и многое другое. Я думаю, что взяв за основу предложенные выше файлы, вы сможете написать любой скрипт для отправки электронных сообщений при помощи этой замечательной утилиты.

Оригинал статьи