Автоматическая отправка электронной почты – хороший способ уведомления администратора о некритичных событиях, таких как результат выполнения запланированных задач (резервного копирования), статус системы и т.п.
Эта статья расскажет, как отправить электронное письмо из командной строки, 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, см. Параметры командной строки, но в этом случае Thunderbird должен быть заранее установлен на компьютере, что не всегда возможно или удобно.
Файлы для скачивания
Blat – официальный сайт или Яндекс.Диск
Mailsend – официальная страница версий или Яндекс.Диск