Отправка почты консоли windows

Блог о 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 имеет очень большие возможности для отправки писем, и все они хорошо задокументированы в справке, остановимся на наиболее часто используемых опциях:

  • — имя файла, содержимое которого будет использоваться blat в качестве текста письма
  • -to — email адрес получателя
  • -tf — ключ, указывающий на файл со списком адресов получателей
  • -subject — заголовок письма
  • -body — текст письма
  • -attach — используется для отправки вложенных файлов
  • -log — лог-файл, содержащий отчет о работе утилиты

    Для простоты все эти настройки можно поместить в один файл и использовать его, что я и делаю

    -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. Пример простейшего скрипта для отправки представлен ниже:

    Читайте также:  Сброс пароля windows администратора диск

    В данном примере тело сообщения формируется в переменной 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 Отправка сообщения
    Читайте также:  Зарегистрировать класс windows консоль mmc

    Особенное внимание прошу обратить на 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

    Читайте также:  Как исправить ошибку windows live

    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…

  • Оцените статью