Отправка почты через cmd windows

Отправка электронной почты из командной строки Windows.

В этой статье я расскажу вам как с помощью бесплатной консольной программы Blat отправлять электронную почту из командной строки Windows или же из пакетного файла. Данный способ очень хорошо подходит для отправки однотипных сообщений по электронной почте.

Скачать программу можно с официального сайта: Скачать
Или напрямую с Sourceforge: Скачать

В директории программы (там где лежит файл «blat.exe» создаем пакетный файл MS-DOS. Открываем его и в нем пишем:

BATCH

Копировать код

А теперь разберем данный пример подробнее:

-server mailserver.com — вместо mailserver.com нужно указать свой почтовый сервер. Часто бывает mail.example.com или же smtp.mail.ru (применительно к почтовому сервису mail.ru). Подробнее об этом вы можете узнать у своего поставщика услуг электронной почты.

-f ot_kogo@example.com — меняем ot_kogo@example.com на свой адрес электронной почты, например vasya_pupkin@example.com.

-u mail_login — вместо поля mail_login нужно вписать свой логин электронной почты. Может быть как просто vasya_pupkin или же vasya_pupkin@example.com.

-pw write_pass_there — вместо write_pass_there пишем свой пароль от почты.

-tf sendlist.txt — создаете текстовый файл и в него пишете адреса электронной почты, на которые собираетесь отсылать сообщения. Пишется просто в столбик.

Рис. 1

Если вам нужно отсылать письмо только на один адрес электронной почты, то вам нужно заменить -tf sendlist.txt на -to komu@example.com, где komu@example.com — адрес электронной почты того человека, которому вы отсылаете сообщение. -subject tema_pisma — здесь указываем тему сообщения.

-body «tekst_sooboscheniya» — здесь указываем само сообщение. Например, «Привет! Как дела?».

Отправляем 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 Отправка сообщения
Читайте также:  What is memory usage in windows

Особенное внимание прошу обратить на 9 строчку. Это полноценная возможность отправлять HTML письма через Windows Powershell по тому же принципу, как это делается в PHP. Необходимо ввести Email, кому вы хотите отправить сообщение, ввести свой адрес почты и пароль, написать текст, потом вставить все это в окно Powershell и нажать Enter . Можете потренироваться на своем ящике. У меня это выглядит вот так:


А само письмо вот так:

В основном эти терминалом пользуются системные администраторы и с его помощью можно решать различные задачи, но рядовому пользователю достаточно знать, что он есть (кстати многие не знают) и умеnь от править через него письмо. На этом знакомство с Windows Powershell подошло к концу. Напишите, знали вы о таком приложении в Виндовс или узнали впервые?

Отправка почты из командной строки посредством 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.

Читайте также:  Cat для windows cmd

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Отправка сообщений электронной почты из командной строки, с помощью утилиты 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С, есть возможность прикрепления файлов в тело письма. В первую очередь, будет…

Читайте также:  Fdisk mbr windows 10

В данной статье я рассмотрю пример кода, который позволяет отправлять электронные сообщения из 1С:Предприятие 8 с помощью стандартной библиотеки CDO.Message. Данная библиотека по умолчанию входит во все версии ОС Windows начиная с Win2K.…

Утилита Sysprep, основным предназначением которой является подготовка эталонного образа Windows к развёртыванию, на борту операционной системы от Microsoft появилась давно, ещё в версии Windows NT 4.0, увидевшей свет в 1996…

Отправка писем из командной строки 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.
На этом все, тестовое письмо должно успешно доставиться в ящик получателя.

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