Відправлення повідомлень електронної пошти з командного рядка, за допомогою утиліти Blat.exe

Сьогодні я розповім про те, як відправляти повідомлення на електронну пошту з командного рядка. Можна навести масу ситуацій, коли необхідно виконувати дану дію. Наприклад, для контролю виконання різних регламентних завдань, резервного копіювання баз даних та ін. А допоможе нам в цьому маленька, зручна і абсолютно безкоштовна утиліта 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 ***
file_blat = D: \ blat \ blat.exe
rem *** Шлях до файлу з текстом повідомлення ***
file_text = D: \ blat \ report.txt
rem *** Шлях до файлу для збереження балки ***
file_log = D: \ blat \ log_blat.txt
rem *** Дані відправника ***
from_server = smtp.mydomen.com
from_port = 25
from_mail=report@mydomen.com
from_name = report
from_pass = password
rem *** Дані одержувача ***
to_mail=user@mydomen.com
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 ***
file_blat = D: \ blat \ blat.exe
rem *** Шлях до файлу з текстом повідомлення ***
file_text = D: \ blat \ report.txt
rem *** Шлях до файлу для збереження балки ***
file_log = D: \ blat \ log_blat.txt
rem *** Дані відправника ***
from_server = smtp.mydomen.com
from_port = 25
from_mail=report@mydomen.com
from_name = report
from_pass = password
rem *** Відправка повідомлення ***
% File_blat%% file_text% -server% from_server%:% from_port% -f% from_mail% -u% from_name% -pw% from_pass% -to -s -log% file_log%

І приклад його запуску з параметрами:

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

rem *** Шлях до програми blat.exe ***
file_blat = D: \ blat \ blat.exe
rem *** Шлях до файлу з текстом повідомлення ***
file_text = D: \ blat \ report.txt
rem *** Шлях до файлу для збереження балки ***
file_log = D: \ blat \ log_blat.txt
rem *** Шлях до файлу з адресами одержувачів ***
file_to = D: \ blat \ mail_list.txt
rem *** Тема повідомлення ***
to_subject = "Report"
rem *** Дані відправника ***
from_server = smtp.mydomen.com
from_port = 25
from_mail=report@mydomen.com
from_name = report
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-файлом, список адрес береться з файлу, а тема листа задається параметром. Зроблено це для того щоб в залежності від роботи завдання відсилати листи з різною тематикою.

Ссылка на основную публикацию