Автоматическая отправка электронной почты – хороший способ уведомления администратора о некритичных событиях, таких как результат выполнения запланированных задач (резервного копирования), статус системы и т.п.

Эта статья расскажет, как отправить электронное письмо из командной строки, cmd или bat файла по протоколу SMTP, в том числе с поддержкой SSL, с текстом и вложением. Также есть примеры команд.

Для критичных событий (сбои системы, отключение связи или электропитания) лучше использовать уведомление по смс.

Чтобы отправить емейл, необходимо

  • сформировать письмо
  • подключиться к почтовому серверу по протоколу SMTP
  • передать содержимое письма

Для отправки емейл из командной строки Windows, с вложениями, с поддержкой тела письма на русском языке, существует несколько программ, самая популярная из которых – Blat.

Отправка емейл из командной строки через программу Blat

Программа Blat имеет много возможностей, поддерживая и отправку вложений, и русский язык.

Но заставить работать Blat с почтой Яндекса не получилось:

Blat v3.1.2 (build : Dec 27 2013 14:33:12)
32-bit Windows, Full, Unicode
superDebug: init_winsock(), WSAStartup() returned 0 (NO_ERROR)
superDebug: Hostname <smtp.yandex.ru> resolved to ip address 213.180.204.38
superDebug: Official hostname is smtp.yandex.ru
superDebug: Attempting to connect to ip address 213.180.204.38
Error: Wait a bit (possible timeout).
*** Error ***  SMTP server error
Error: Not a socket.
Error: Not a socket.

Та же проблема будет и при подключении к почте Google Mail.

Причина проста – Blat не имеет возможности работать через SSL, поэтому для таких SMTP серверов можно использовать Blat поверх OpenSSL или stunnel (который, кстати использует библиотеки OpenSSL), а проще использовать программу MailSend, она поддерживает SSL, хотя имеет меньше опций в плане кодировок текста.

Отправка емейл из командной строки через программу MailSend

Следующая команда показывает, как из командной строки отправить емейл с помощью программы MailSend. Сообщение будет отправлено через SMTP сервер Яндекса, при этом текст сообщения подготовлен в файле MESSAGEBODY.TXT в кодировке ANSI (1251).

Также пример показывает, как к письму прикрепляется вложение – файл LOGS.ZIP. Для удобства просмотра команда разнесена на несколько строк крышечкой ^

mailsend1.16.exe -t username@domainname -attach messagebody.txt,text/uuencode,i ^
-attach logs.zip,application/zip,e -sub "Отказ сети" -smtp smtp.yandex.ru -port 465 ^
-f nhutils@yandex.ru -name "nhutils" -rt nhutils@yandex.ru ^
-ssl -auth-login -user nhutils -pass password -q

Тело письма отправляется через файл:

-attach messagebody.txt,text/uuencode,i

Хотя отправляется через -attach, но параметр i указывает, что этот файл будет именно в теле письма, а не как вложение. Второй параметр text/uuencode задает тип MIME, т.е. кодировку текстового файла, это важно для того, чтобы почтовый сервер правильно прочитал файл. В примере задано значение text/uuencode, в случае проблем необходимо использовать одно из других стандартных значений MIME, например, для отправки в html.

Такой же формат строки запуска будет для отправки электронных писем через другие SMTP сервера с подключением SSL, в том числе, Google Mail smtp.google.com.

Кроме того, отправить емейл из командной строки можно программой Thunderbird, см. Параметры командной строки, но в этом случае Thunderbird должен быть заранее установлен на компьютере, что не всегда возможно или удобно.

Отправить емейл из bat файла по SMTP
Метки:        

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *