пятница, 28 июля 2017 г.

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


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

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

Скачать программу Blat можно с официального сайта или с текущего. На момент написания статьи последней была версия 3.0.7. В архиве 2 папки: full — непосредственно сама программа и docs — документация по программе. Для установки необходимо скопировать содержимое папки full в «C:\Windows\system32\» или в любую другую директорию, но в этом случае при вызове программы придется указывать путь к исполняемому файлу. Я в своем примере буду использовать второй вариант.
Есть возможность сразу создать профиль для отправки сообщений, для этого необходимо выполнить «Blat -install smtp.yoursite.tld youruserid@yoursite.tld». Я не буду рассматривать данный режим работы. Подробнее читайте в файле «readme.txt».

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

Если открыть файл «syntax.txt» из прилагаемой документации, то можно увидеть огромный список команд, поддерживаемый данной утилитой, что говорит о ее богатых возможностях. Выделим основные и получим следующий «батник» send_email.bat (скачать все файлы в одном архиве) для отправки сообщения с адреса report@mydomen.com на адрес user@mydomen.com:
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=report@mydomen.com
set from_name=report
set from_pass=password

rem *** Данные получателя ***
set to_mail=user@mydomen.com
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:
Blat_01
Можно доработать файл таким образом, чтобы адрес получателя и тема сообщения задавалась параметрами запуска. Вот содержимое такого 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=report@mydomen.com
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%
И пример его запуска с параметрами:
Blat_02
Если получателей несколько, то при вызове утилиты можно указать текстовый файл с адресами получателей сообщения:
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=report@mydomen.com
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=report@mydomen.com
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, есть возможность хранить настройки в файле или в реестре, прикреплять вложения в тело письма и многое другое. Я думаю, что взяв за основу предложенные выше файлы, вы сможете написать любой скрипт для отправки электронных сообщений при помощи этой замечательной утилиты.
Помогла ли Вам данная статья?

1 коммент.:

  1. Blat - Windows Command Line SMTP Mailer для отправки писем из консоли.
    Среда, 7 мая 2014 г.
    Метки: Blat | cmd | mail smtp | smtp | SMTP Mailer | Windows Command
    Просмотров: 10386
    Подписаться на комментарии по RSS
    Хорошая и маленькая консольная open source программа под Windows для отправки писем из консоли по SMTP протоколу.

    Очень удобно для автоматизации процесса отправки писем, раз настроил и забыл :).

    И так для начало установка, на момент написания текущая версия была 3.2.0 (2013 dec 27):

    - сам официальный сайт

    - берем тут

    Программу устанавливать не надо, просто качаем архив и распаковываем его в какой-нибудь каталог. Но если планируем использовать blat в скриптах или батниках, то лучше поместить ее в с:windows\system32 или в каталоги, которые указанны в задаваемых переменной окружения PATH.

    Так же можно создать свой профиль с определенными параметрами, эти данные запишутся в реестр и могут использоваться программой в качестве входных параметров.

    blat.exe -install
    Программа Blat имеет очень большие возможности для отправки писем, и все они хорошо задокументированы в справке, остановимся на наиболее часто используемых опциях:

    - имя файла, содержимое которого будет использоваться blat в качестве текста письма
    -to - email адрес получателя
    -tf - ключ, указывающий на файл со списком адресов получателей
    -subject - заголовок письма
    -body - текст письма
    -attach - используется для отправки вложенных файлов
    -log - лог-файл, содержащий отчет о работе утилиты
    Для простоты все эти настройки можно поместить в один файл и использовать его, что я и делаю

    -of : из файла содержащие настройки
    Вот например, содержимое основного файла, вроде как все понятно:

    -bodyF d:\letter.txt
    -subject "Тема нашего письма"
    -to ""
    -f "КАК представляемся "
    -u НАШ_отправитель_имя_для_авторизация_на_сервере
    -pw НАШ_отправитель_пароль_для_авторизация_на_сервере
    -server САМ_сервер
    -try 1
    -debug
    -charset windows-1251
    -noh
    -log d:\blat.log
    letter.txt - тело нашего сообщения

    blat.log - куда писать лог-файл.

    Все это дело можно поместить в bat файлы,(пакетные) CMD-файлы. Или непосредственный запуск из командной строки:

    ОтветитьУдалить