- Блог о Linux и Windows
- Записки по настройке Debian Ubuntu и Microsoft Windows
- Blat — Windows Command Line SMTP Mailer для отправки писем из консоли.
- Комментариев: 1
- Отправка почты из командной строки посредством msmtp
- Отправляем Email через терминал Windows Powershell (командная строка)
- Отправка писем из командной строки Telnet с SMTP авторизацией
- Отправка сообщений электронной почты из командной строки, с помощью утилиты Blat.exe
- 1. Утилита Blat.exe
- 2. bat-файлы для отправки сообщений
- 3. Заключение
- Смотрите также:
Блог о Linux и Windows
Записки по настройке Debian Ubuntu и Microsoft Windows
Blat — Windows Command Line SMTP Mailer для отправки писем из консоли.
Хорошая и маленькая консольная open source программа под Windows для отправки писем из консоли по SMTP протоколу.
Очень удобно для автоматизации процесса отправки писем, раз настроил и забыл :).
И так для начало установка, на момент написания текущая версия была 3.2.0 (2013 dec 27):
Программу устанавливать не надо, просто качаем архив и распаковываем его в какой-нибудь каталог. Но если планируем использовать blat в скриптах или батниках, то лучше поместить ее в с:windows\system32 или в каталоги, которые указанны в задаваемых переменной окружения PATH.
Так же можно создать свой профиль с определенными параметрами, эти данные запишутся в реестр и могут использоваться программой в качестве входных параметров.
Программа Blat имеет очень большие возможности для отправки писем, и все они хорошо задокументированы в справке, остановимся на наиболее часто используемых опциях:
Для простоты все эти настройки можно поместить в один файл и использовать его, что я и делаю
-of : из файла содержащие настройки
Вот например, содержимое основного файла, вроде как все понятно:
-bodyF d:\letter.txt
-subject «Тема нашего письма»
-to » »
-f «КАК представляемся »
-u НАШ_отправитель_имя_для_авторизация_на_сервере
-pw НАШ_отправитель_пароль_для_авторизация_на_сервере
-server САМ_сервер
-try 1
-debug
-charset windows-1251
-noh
-log d:\blat.log
letter.txt — тело нашего сообщения
blat.log — куда писать лог-файл.
Все это дело можно поместить в bat файлы,(пакетные) CMD-файлы. Или непосредственный запуск из командной строки:
Комментариев: 1
Здравствуйте, да, интересная утилита, использую уже с пол года, бросаю дополнительные команды в файл с отправкой письма и в планировщик вот таким способом получаю выполнение или не выполнение неких задач с батника.
Отправка почты из командной строки посредством msmtp
msmtp — простой консольный клиент для отправки сообщений электронной почты по протоколу SMTP.
Поскольку в сети достаточно статей про настройку msmtp через файлы конфигурации, рассмотрим возможность отправки сообщений без использования таких файлов. Это может потребоваться, например, когда адрес отправителя и данные аутентификации формируется непосредственно в скрипте перед отправкой (запрашиваются из БД и т.п.)
В данной статье рассматривается отправка почты через публичные серверы smtp на примере версии 1.4.31
Публичные серверы обычно предоставляют порты для обычного и защищенного обмена по протоколу SMTP. При обычном передача сообщений протокола идет открытым текстом. При защищенном — шифруется SSL.
Для обычного обмена как правило используется стандартный порт 25. Пример простейшего скрипта для отправки представлен ниже:
В данном примере тело сообщения формируется в переменной MAIL_MESSAGE. Отправка сообщения производится на 25 порт сервера smtp.from.ru. Для авторизации в данном случае используются имя пользователя и пароль. В качестве имени пользователя используется адрес отправителя. Такая процедура авторизации является обычной практикой для публичных серверов. Пароль в примере передается открытым текстом, что не очень хорошо. Возможные способы защиты пароля можно найти в сети, например здесь.
Ключ -d используется для отладки обмена с сервером.
Для защищенного обмена обычно используется порт 465. При обмене с использованием SSL (SMTPS) предыдущий пример требуется немного изменить:
В данном примере отличается номер порта MAIL_PORT, а также добавились следующие опции:
—tls=on, включает TLS туннель;
—tls-certcheck=off, без проверки сертификата (проверка сертификата выходит за рамки данной статьи);
—tls-starttls=off, данная опция выполняет немедленный запуск TLS при старте обмена с сервером;
msnmp может включать TLS туннель STARTTLS SMTP командой из обычного режима. При этом для обмена с сервером используется стандартный порт 25 (иногда 587). Чтобы включить данный режим в предыдущем примере необходимо изменить номер порта MAIL_PORT=587 и включить опцию —tls-starttls=on (можно удалить из параметров командной строки, поскольку эта опция включена в настройках программы по умолчанию)
К сожалению, программа не умет отсылать письма с вложениями. Тело письма с вложениями нужно формировать самостоятельно. Следующий пример, демонстрирует отправку такого письма:
В этом примере параметры командной строки msmtp такие же, как в первом скрипте.
Сообщение состоит из двух секций, разделяемых специальной меткой MAIL_BOUNDARY.
Секция с текстом сообщения находится непосредственно в теле письма.
Вложение в данном примере представляет собой секцию с содержимым видеофайла, кодированную base64 при помощи утилиты uuencode.
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Отправляем Email через терминал Windows Powershell (командная строка)
Следует начать с того, что Windows Powershell — это не стандартная командная строка с черным фоном. Это другая оболочка и фон у нее темно-синий. Она поставляется в системы Windows начиная в 7 версии. И с ее помощью можно отравлять письма на почту через SMPT сервер. В некоторых случаях такой способ отправки Email может выручить, когда все другие по каким-то причинам вам недоступны. Ну и для общей практики и знакомства с терминалом Windows Powershell и некоторыми его командами, которые в нем называются — командлеты. Вызвать окно Powershell очень просто. Достаточно нажать Win + R и вписать туда Powershell.
А вот и сам скрипт:
$EmailTo = «po4ta@mail.ru» $EmailFrom = «PowerShell mymail@yandex.ru» $Subject = «Отправка из PowerShell» $Body = «Тестовое сообщение, отправленное из командной строки PowerShell» $SMTPServer = «smtp.yandex.ru» $filenameAndPath = «C:\Users\777\Downloads\003435.pdf» $SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body) $attachment = New-Object System.Net.Mail.Attachment($filenameAndPath) $SMTPMessage.IsBodyHTML=$true $SMTPMessage.Attachments.Add($attachment) $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) $SMTPClient.EnableSsl = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential(«mymail@ya.ru», «mymail123»); $SMTPClient.Send($SMTPMessage)
Теперь разберем более подробно.
1 | Куда отправляем Email |
2 | Имя и адрес отправителя |
3 | Тема письма |
4 | Текст письма |
5 | Имя SMTP сервера |
6 | Путь к файлу-вложению (если нужен) |
7, 8 | Формирование объекта сообщения |
9 | Включение возможности отправлять HTML письма |
10 | Добавление вложения к письму |
11 | Указание порта SMTP сервера |
12 | Включение защищенного соединения SSl |
13 | Адрес и пароль почты. с которого будет отправка |
14 | Отправка сообщения |
Особенное внимание прошу обратить на 9 строчку. Это полноценная возможность отправлять HTML письма через Windows Powershell по тому же принципу, как это делается в PHP. Необходимо ввести Email, кому вы хотите отправить сообщение, ввести свой адрес почты и пароль, написать текст, потом вставить все это в окно Powershell и нажать Enter . Можете потренироваться на своем ящике. У меня это выглядит вот так:
А само письмо вот так:
В основном эти терминалом пользуются системные администраторы и с его помощью можно решать различные задачи, но рядовому пользователю достаточно знать, что он есть (кстати многие не знают) и умеnь от править через него письмо. На этом знакомство с Windows Powershell подошло к концу. Напишите, знали вы о таком приложении в Виндовс или узнали впервые?
Отправка писем из командной строки Telnet с SMTP авторизацией
В некоторых случаях с целью тестирования или диагностики работы почты, почтовому администратору требуется проверить отправку писем через свои сервера Exchange (и не только) с определенных хостов. В том случае, если сервер не требует авторизации (open-relay сервер), отправить почту можно из командной строки telnet . Однако в большинстве случае почтовые сервера для отправки почты требуют авторизации. В этом примере мы покажем, как в консоли telnet выполнить аутентификацию типа AUTH LOGIN на SMTP сервере и отправить письмо.
AUTH LOGIN – в терминологии Exchange – это базовая аутентификация, когда имя и пароль пользователя передаются по сети в закодированном по алгоритму base64 виде. На большинстве внутренних серверах Exchange администраторы не отключают BasicAuthentication . Проверить ее поддержку можно в настройках принимающего коннектора.
Примечание . Обращаем ваше внимание что злоумышленник при доступе к каналу связи может легко перехватить и расшифровать закодированные по Base64 учетные данные пользователя. Поэтому этот способ авторизации рекомендуется использовать исключительно в частных корпоративных сетях.
Для авторизации на почтовом сервер с с помощью AUTH LOGIN, нам нужно преобразовать имя и пароль пользователя, из-под которого будет отправляться письмо в формат Base64. Это можно сделать с помощью скриптов или онлайн сервисов. Я воспользоваться сайтом https://www.base64encode.org/.
Имя пользователя: testuser@contoso.com , в кодировке Base64 получилось: dGVzdHVzZXJAY29udG9zby5jb20=
Пароль: $up3RsTr)ng — в Base64 JHVwM1JzVHIpbmc=
Теперь в командой строке с помощью Telnet подключаемся на 25(SMTP) порт нашего почтового сервера (вводимые команды я буду выделять синим цветов):
telnet mail.contoso.com 25
Если это Exchange, он вернет что-то вроде;
220 mail.contoso.com Microsoft ESMTP MAIL Service ready at Thu, 10 Aug 2015 14:25:30 +0300
Сервер вернет список поддерживаемых типов авторизаций и возможностей. Как вы видите базовая авторизация (AUTH LOGIN) в списке имеется.
250-mail.contoso.com Hello [192.168.100.15]
250-SIZE 36700160
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-AUTH LOGIN
250-8BITMIME
250-BINARYMIME
250 CHUNKING
Сообщаем SMTP серверу, что мы хотим авторизоваться с помощью имеющейся учетной записи:
Сервер должен ответить:
334 VXNlcm5hbWU6
Теперь вставляем имя пользователя в формате Base64, которое мы закодировали ранее:
dGVzdHVzZXJAY29udG9zby5jb20=
Сервер должен ответить:
Теперь пора вставить пароль в формате Base64:
JHVwM1JzVHIpbmc=
Если имя и пароль пользователя верны, сервер ответит.
235 2.7.0 Authentication successful
535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6
mail from: testuser@contoso.com
250 2.1.0 Sender OK
rcpt to: admin@contoso.com
250 2.1.5 Recipient OK
data
354 Start mail input; end with .
from: TestUserovich
to: TheAdmin
Subject: Test BASE SMTP Authenticated via Telnet
This is test
.
250 2.6.0 [InternalId=6384384] Queued mail for delivery
221 2.0.0 Closing connection.
Connection closed by foreign host.
На этом все, тестовое письмо должно успешно доставиться в ящик получателя.
Отправка сообщений электронной почты из командной строки, с помощью утилиты Blat.exe
Сегодня я расскажу о том, как отправлять сообщения на электронную почту из командной строки. Можно привести массу ситуаций, когда необходимо выполнять данное действие. Например, для контроля выполнения различных регламентных заданий, резервного копирования баз данных и пр. А поможет нам в этом маленькая, удобная и абсолютно бесплатная утилита Blat.exe.
1. Утилита Blat.exe
Скачать программу Blat можно с официального сайта или с текущего. На момент написания статьи последней была версия 3.0.7. В архиве 2 папки: full — непосредственно сама программа и docs — документация по программе. Для установки необходимо скопировать содержимое папки full в «C:\Windows\system32\» или в любую другую директорию, но в этом случае при вызове программы придется указывать путь к исполняемому файлу. Я в своем примере буду использовать второй вариант.
Есть возможность сразу создать профиль для отправки сообщений, для этого необходимо выполнить «Blat -install smtp.yoursite.tld youruserid@yoursite.tld». Я не буду рассматривать данный режим работы. Подробнее читайте в файле «readme.txt».
2. bat-файлы для отправки сообщений
Если открыть файл «syntax.txt» из прилагаемой документации, то можно увидеть огромный список команд, поддерживаемый данной утилитой, что говорит о ее богатых возможностях. Выделим основные и получим следующий «батник» send_email.bat (скачать все файлы в одном архиве) для отправки сообщения с адреса report@mydomen.com на адрес user@mydomen.com:
Таким образом, для отправки сообщения достаточно будет просто вызвать файл send_email.bat:
Можно доработать файл таким образом, чтобы адрес получателя и тема сообщения задавалась параметрами запуска. Вот содержимое такого bat-файла:
И пример его запуска с параметрами:
Если получателей несколько, то при вызове утилиты можно указать текстовый файл с адресами получателей сообщения:
Где файл mail_list.txt будет содержать адреса получателей разделенные переносом строки.
Ну и наконец, приведу пример файла, который я использую в данный момент. В нем все файлы находятся в директории с исполняемым bat-файлом, список адресов берется из файла, а тема письма задается параметром. Сделано это для того чтобы в зависимости от работы задания отсылать письма с разной темой. Например:
3. Заключение
Данные примеры не описывают все возможности программы Blat.exe. Она поддерживает сервера SMTP, NNTP, POP3 и IMAP, есть возможность хранить настройки в файле или в реестре, прикреплять вложения в тело письма и многое другое. Я думаю, что взяв за основу предложенные выше файлы, вы сможете написать любой скрипт для отправки электронных сообщений при помощи этой замечательной утилиты.
Смотрите также:
В данной статье представлен экземпляр кода на язке 1С и добавлена небольшая обработка, позволяющая отправить электронное сообщение средствами 1С, есть возможность прикрепления файлов в тело письма. В первую очередь, будет…
В данной статье я рассмотрю пример кода, который позволяет отправлять электронные сообщения из 1С:Предприятие 8 с помощью стандартной библиотеки CDO.Message. Данная библиотека по умолчанию входит во все версии ОС Windows начиная с Win2K.…
Утилита Sysprep, основным предназначением которой является подготовка эталонного образа Windows к развёртыванию, на борту операционной системы от Microsoft появилась давно, ещё в версии Windows NT 4.0, увидевшей свет в 1996…