среда, 17 апреля 2013 г.

Отправка e-mail из командной строки Windows



Вот насколько всё же проще людям в англоговорящих странах! Во-первых, раскладку клавиатуры им переключать не надо. Во-вторых - с кодировками символов заморочек никаких. А я вот каждый раз, когда сталкиваюсь с тем, что надо что-то в консоли сделать с русскими символами, проклинаю разработчиков Windows. Ну, честное слово, это же издевательство какое-то! Даже в рамках ОДНОЙ операционной системы используется ДВЕ кодировки символов. И каждый раз я заново бьюсь головой об эти разногласия между ними.

Вот из последнего. Хочется мне, чтобы в пятницу вечером текст из определённого файлика рассылался группе товарищей. Группа, прямо скажем, небольшая, шесть человек или около того, но всё равно делать рассылку вручную надоедает. Для такого случая существуют консольные почтовые клиенты, для которых можно написать небольшой скрипт, и всё, раз в неделю (или как угодно) планировщик будет его запускать и делать за тебя всю работу. Собственно, мне так уведомления с серверов приходят - если что не так, скрипт присылает письмо. Но, зная о проблеме с кодировками, я все уведомления для себя написал транслитом. А для людей мне нужно отправлять нормальный русский текст, нормальными русскими буквами.

Утилитка, которой я пользуюсь, с оригинальным названием Blat, вроде бы умеет работать с кодировками. Поэтому я написал вот такой скриптик:
@echo off
setlocal
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 (

D:\Temp\blat307\full\blat.exe -to %%f -f %smtpsender% -server %smtpserver% -port %smtpport% -u %smtpuser% -pw %smtppwd% -log %logfile% -charset %codepage% -sf %subj% -bodyF %msg%
)

ECHO Sended > %msg%

:END
То есть чёрным по белому написано, что codepage у нас Windows-1251. Но почему-то письма приходит через раз крякозябрами. Что тому причиной - поди разберись. С виду-то всё правильно!

Комментариев нет :

Отправить комментарий