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

Как отправить почту на SMTP сервер Gmail (Google) через программу Blat



Напоминаю, что программа Blat (http://www.blat.net) - это небольшая утилита, которая может посылать почту из "Командной строки". То есть, без полноценного почтового клиента. Может пригодиться для автоматизации оправки почты без участия пользователя.
Программа отлично работает с обычными SMTP серверами и описание наладки этого процесса достаточно хорошо документировано. И все было бы замечательно, но программа не умеет работать с SMTP серверами, которые при отправке почты требуют организации "Безопасного соединения" - SSL.
Хочется нам того, или не хочется, но это "Безопасное соединение" нам придется организовывать самим. И возьмем мы для этого программу "STunnel" (http://www.stunnel.org). Я лично качал программу по этой ссылке:
http://www.stunnel.org/download/stunnel/win32/stunnel-4.26-installer.exe

Инсталлируем программу, залезаем в корень этой проги и находим файл stunnel.conf Редактируем его и приводим этот вид:
; Some debugging stuff useful for troubleshooting
;debug = 7
;output = stunnel.log

; Use it for client mode
;client = yes

; Service-level configuration
[pop3s]
accept = 995
connect = 110

;[imaps]
;accept = 993
;connect = 143

[ssmtp]
accept = 465
connect = 25

к этому виду:
; Some debugging stuff useful for troubleshooting
debug = 7
;output = stunnel.log

; Use it for client mode
client = yes

; Service-level configuration
[pop3s]
accept = 127.0.0.1:1109
connect = pop.gmail.com:995

;[imaps]
;accept = 993
;connect = 143

[smtps]
accept = 127.0.0.1:1099
connect = smtp.gmail.com:465
После чего, воспользовавшись уже созданными во время инсталляции программы ярлыками в меню "Пуск" винды, "Инсталлируем службу" (Service install) и "Стартуем службу" (Service start).
Далее распаковываем (обычной инсталляции она не требует) программу Blat в каталог, (пусть это будет каталог C:\Blat\), и запускаем C:\Blat\blat.exe /? Программа выдаст все параметры, с которыми она может работать.
Теперь делаем один важный момент. Запускаем из "Командной строки" такую команду:
C:\Blat\blat.exe -install -serverSMTP 127.0.0.1 -portSMTP 1099 -try 1 -u vasya@gmail.com -pw 12345 -f vasya@gmail.com
C:\Blat\blat.exe - это, разумеется, путь, где сидит наш запускаемый екзешник
-install - это ключ, заставляющий Blat записать в реестр винды настройки, которые следуют далее в нашей командной строке
-serverSMTP 127.0.0.1 - это сервер SMTP (который прописан нами в настройках в "Stunnel".
-portSMTP 1099 - порт SMTP сервера (который прописан нами в настройках "Stunnel".
-try 1 - это число попыток, если отправка почты не удалась (необязательный параметр).
-u vasya@gmail.com - имя пользователя
-pw 12345 - пароль
-f vasya@gmail.com - от имени кого будет приходить почта

После выполнения строки, в реестре, по этому пути:
HKEY_LOCAL_MACHINE\SOFTWARE\Public Domain\Blat
сохранятся настройки, которые потом уже не нужно будет указывать при отправке почты через Блат. Это удобно. К тому же, это еще и безопасно тем, что в дальнейшем вам не понадобиться в параметрах blat.exe, указывать свой пароль в открытом виде (в реестре он хранится в зашифрованном виде). Хочется отметить, что команду "-install " можно и не выполнять вовсе. Это не строго обязательно. Просто потом, в дальнейшем, в параметрах программы Blat, вам придется всегда указывать абсолютно все параметры, в том числе и пароль (в открытом виде). Полная строка в этом случае будет выглядеть так:
C:\Blat\blat.exe -subject "Eto tema soobscheniya" -body " Eto telo soobscheniya " -to sss@sss.net -serverSMTP 127.0.0.1 -portSMTP 1099 -f vasya@gmail.com -u vasya@gmail.com -pw 12345

А если мы выполнили команду "-install" и заранее прописали наши настройки в реестре, то строка отправки почты будет выглядеть так:
C:\Blat\blat.exe -subject "Eto tema soobscheniya" -body " Eto telo soobscheniya " -to sss@sss.net
Как мы видим, в этом случае достаточно лишь указать тему, тело письма и кому мы его посылаем. Коротко и просто.

После удачной отправки письма, в командной строке должно появится сообщение такого вида:
Sending stdin.txt to sss@sss.net
Subject: Eto tema soobscheniya
Login name is vasya@gmail.com
Разумеется, без каких либо сообщений об ошибках

Создав обычный bat-файл, и запихнув туда такие строки:
C:\Blat\blat.exe -subject "Fayl 001" -body "Fayl 001" -to sss@sss.net -attach E:\ForDC\part001.rar
ping -n 180 localhost > nul
C:\Blat\blat.exe -subject "Fayl 002" -body "Fayl 002" -to sss@sss.net -attach E:\ForDC\part002.rar
ping -n 180 localhost > nul
C:\Blat\blat.exe -subject "Fayl 003" -body "Fayl 003" -to sss@sss.net -attach E:\ForDC\.part003.rar
можно отправить три письма подряд, с интервалом в три минуты.

Всем удачи в бою! :)

2 коммент.: