Отправка e-mail из командной строки Windows
Если вдруг нужно отправлять автоматические письма из командного файла, то очень поможет консольный клиент Blat. Я его использую для автоматической рассылки избранного с bash.org.ru по списку друзей:
@echo off
setlocal
set blat=
D:\path\to\Programs\blat307\full\blat.exe
set list=D:\path\to\Programs\blat307\files\maillist.txt
set smtpsender=username@yandex.ru
set smtpserver=smtp.yandex.ru
set smtpport=25
set smtpuser=username@yandex.ru
set smtppwd=password
set subj=D:\path\to\Programs\blat307\files\subj.txt
set msg=D:\path\to\Programs\blat307\files\msg.txt
set logfile=D:\path\to\Programs\blat307\log\blat_log.txt
set codepage=Windows-1251
for /f %%f in ('type %list%') do (
%blat% -to %%f -f %smtpsender% -server %smtpserver% -port %smtpport% -u %smtpuser% -pw %smtppwd% -log %logfile% -charset %codepage% -sf %subj% -bodyF %msg%
)
ECHO Sended > %msg%
:END
Что делает скрипт:
- Сначала устанавливаются локальные переменные, чтобы потом в командной строке не писать длинные строки.
Файл
maillist.txt содержит список адресов, по которым будет проводится отправка писем - по одному адресу на строку.- Переменные "subj" и "msg" содержат путь к файлам, которые содержат, соответственно, тему письма и тело письма. Иначе русские символы превращаются в "крякозябры", хоть зауказывайся кодовую страницу.
- В цикле перебираются адреса из файла maillist.txt и по ним отправляется письмо.
- После отправки писем и выхода из цикла в файл сообщения записывается "Sended". Это сделано для того, чтобы продвинутый планировщик nnCron мог понять, что файл пустой и отправлять ничего не надо.