- Отправка электронной почты из командной строки Windows.
- Электронная почта через командную строку
- Доступ к SMTP через telnet (отправка почты).
- Доступ к POP3 через telnet (приём почты)
- Как отправить файл по электронной почте из командной строки Linux.
- Читайте другие интересные статьи
- Отправляем Email через терминал Windows Powershell (командная строка)
- Отправка почты из командной строки посредством msmtp
- Отправка писем из командной строки Telnet с SMTP авторизацией
Отправка электронной почты из командной строки 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» — здесь указываем само сообщение. Например, «Привет! Как дела?».
Электронная почта через командную строку
Иногда бывают такие ситуации, что получить или отправить электронную почту обычным путём нельзя (не работает/отсутствует почтовый клиент). В этом случае на помощь приходит командная строка.
Доступ к SMTP через telnet (отправка почты).
telnet mail.mydomain.ru 25
mail.mydomain.ru — адрес smtp сервера
25 — smtp-порт сервера с которым должен соедениться telnet
220 mail.mydomain.ru ESMTP Sendmail 8.13.1/8.13.1; Sat, 6 Oct 2007 09:50:16 +0400
ehlo lo
ehlo lo — поздоровались с удалённым smtp-сервером
250-ENHANCEDSTATUSCODES
250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5
mail from: test@mydomain.ru
тут мы говорим что адрес почтовый отправителя письма test@mydomain.ru
250 2.1.0 test@mydomain.ru. Sender ok
поверка отправителя прошла успешно
rcpt to: test@remote.ru
здесь мы ввели постовый адрес получателя нашего письма test@remote.ru
250 2.1.5 test@remote.ru. Recipient ok
проверка получателя прошла успешно
data
комманда data говорит о том, что дальше пойдёт тело письма
354 Enter mail, end with «.» on a line by itself
ответ сервера говорит нам о том что закончить письмо мы должны набрать точку «.» на новой строке после набранного нами сообщения (тела письма)
this test mail bla-bla-bla.
это наш текст
.
точка — даём понять серверу что письмо набрано и его пора отправлять адресату
250 2.0.0 l965oGGR025162 Message accepted for delivery
ответ сервера — письмо ушло на отправку
Доступ к POP3 через telnet (приём почты)
telnet pop3.myserver.ru 110
pop3.myserver.ru — наш pop3 сервер
110 — pop3-порт на который соедениться телнет
+OK
сервер сказал что соеденение прошло нормально
user test
ввели имя пользователя test.
pass parol
ввели пароль «parol»
теперь мы можем узнать колличество и размер почтовых сообщений:
stat
для вывода полного листинга почтовых сообщений надо использоваьт команду:
list
для того чтобы прочитать нужное сообщение вводим:
retr номер письма
просмотреть только заголовок сообщения:
top номер письма 0 (в конце строки поставить ноль)
удалить письмо из ящика:
dele номер сообщения
выход:
quit
Дополнение:
1) Если SMTP сервер требует SMTP-аутентификацию, то после того как мы с ним поздоровались (ehlo lo) вводим команду AUTH LOGIN и после неё поочереди:
USERNAME имя-пользователя
PASSWORD наш-пароль
2) На почтовых серверах где заведено несколько виртуальных почтовых доменах в POP3-сессии в поле user следует вводить полностью эл ящик: test@myserver.ru
Как отправить файл по электронной почте из командной строки Linux.
Для отправки файла из командной строки можно воспользоваться несколькими способами:
- Отправка текстового файла cat text.txt | mail -s TEST email@address
- Отправка бинарного файла cat text.exe | uuencode text.txt | mail -s TEST email@address
- Отправка файла с архивированием на лету: gzip -c text | uuencode text.gz | mail -s TEST email@address
- Отправка с помощью утилиты mpack: mpack -s “Attached file” file.jpg test@example.com
- Отправка с помощью утилиты nail:
mail -s «Let’s send file» -a file_to_send.rar recepient@email.adr
Look at this funny file
Во всех перечисленных примерах -s это subject (тема письма). команда mail входит в состав пакета mailutils, программа mpack входит в состав одноимённого пакета mpack.
Читайте другие интересные статьи
Понравилась статья, расскажи о ней друзьям, нажми кнопку!
Отправляем 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 подошло к концу. Напишите, знали вы о таком приложении в Виндовс или узнали впервые?
Отправка почты из командной строки посредством 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 будет скрыт псевдонимом.
Отправка писем из командной строки 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.
На этом все, тестовое письмо должно успешно доставиться в ящик получателя.