Использование telnet для отправки e-mail.Следовательно, простое письмо без вложений на английском языке очень легко можно отправить используя стандартную утилиту telnet.exe. Эта утилита имеется в составе программного обеспечения любой ОС семейства Windows и обычно предназначена для работы в командной строке удаленного компьютера. Выполняется подключение к удаленному компьютеру с telnet-сервером по протоколу TCP на порт 23 и вводимые с клавиатуры команды передаются серверу и выполняются в его программной среде, а стандартный вывод удаленной системы осуществляется в окне telnet - клиента. В командной строке запуска telnet можно указать IP-адрес или имя удаленного узла и номер порта к которому будет выполняться подключение. Если номер порта не задан, то используется порт 23 (telnet) telnet 192.168.1.1 23 - подключение к узлу 192.168.1.1 на порт 23 (к серверу TELNET) telnet post.cnt.ru 25 - подключение на порт 25 ( к серверу SMTP) Последний вариант команды телнет позволяет подключиться к почтовому серверу без использования клиентского программного обеспечения и даже выполнить отправку простого электронного письма. Если подключение к серверу по TCP/25 выполнится успешно, то он ответит приглашением, чем-то вроде: 220 This ESMTP is CNT server for card users Сообщения от сервера SMTP состоят из числового трехзначного номера сообщения ( 220 - сервер готов к работе) и информационного текста. Для организации сессии обмена данными по протоколу SMTP клиент должен представиться серверу с использованием команды HELO и указания своего имени или IP-адреса. Команды протокола SMTP состоят из 4-х символов и могут иметь необязательные параметры. Вводим с клавиатуры HELO myhost.ru В качестве параметра HELO можно задать localhost или все что угодно, поскольку сервер не выполняет проверку его достоверности, что является одним из недостатков данного протокола. Вместо команды HELO можно ввести EHLO, и тогда сервер дополнительно к сообщению о начале сессии ответит списком поддерживаемых им SMTP-команд: 250-post.cnt.ru Hello myhost.ru, pleased to meet you 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-SIZE 10000000 250-DSN 250-ONEX 250-ETRN 250-XUSR 250 HELP Идентификатор ответа 250 означает "выполнено" (или "OK" ) Перечень поддерживаемых команд зависит от программного обеспечения сервера и его настроек. Минимально необходимый для отправки письма набор команд состоит из 3-х: MAIL - задает адрес отправителя RCPT - задает адрес получателя DATA - текст сообщения Формат указания адреса отправителя MAIL FROM:BillGates@microsoft.com Достоверность адреса отправителя сервером не проверяется, что позволяет легко подделывать электронные послания. Пусть будет письмо от Билла Гейтса. Если команда введена без синтаксических ошибок, то она будет принята, и сервер ответит сообщением с номером 250 (OK): 250 2.1.0 BillGates@microsoft.com ... Sender ok означающим, что адрес отправителя принят. Теперь вводим адрес получателя: RCPT TO: apb@mail.cnt.ru Если ввод выполнен без ошибок, сервер подтвердит продолжение сессии сообщением с номером 250: 250 2.1.5 apb@mail.cnt.ru ... Recipient ok Теперь можно ввести текст письма. Начало ввода текста задается директивой DATA, а окончание - строкой с одной единственной точкой. DATA Сервер предложит ввести текст письма, выдав в ответ на DATA сообщение с номером 354: 354 Please start mail input. Теперь можно вводить любой текст на английском языке: Hello,Vasya! ... Good Bye! . После ввода точки письмо будет принято к доставке получателю, о чем сервер сообщит кодом 250: 250 Mail queued for delivery. Для завершения SMTP - сессии используется команда QUIT Письмо будет доставлено получателю, и в качестве адреса отправителя, в почтовом клиенте, будет отображаться BillGates@microsoft.com     В связи с проблемой спама и несовершенством протокола SMTP, подавляющее большинство почтовых серверов настраивается таким образом, что обойтись 3-мя вышеупомянутыми командами наверняка не получится. Скорее всего, как минимум, потребуется проверка подлинности пользователя с использование команды AUTH. Чаще всего используется проверка по имени пользователя и паролю (AUTH LOGIN), предполагающая их ввод в кодировке BASE64 Пример отправки электронного письма с использованием команды telnet всего лишь демонстрирует логику SMTP-сессии, и может быть использован как средство практического изучения протокола SMTP. Отправка электронной почты из командной строки.    Для отправки электронной почты из командной строки в операционных системах семейства Windows стандартных средств не предусмотрено, однако можно воспользоваться программным обеспечением сторонних производителей, как, например, бесплатной утилитой Blat.exe. Сайт программы - www.blat.net. Скачать актуальную версию можно с сайта разработчика. В данной статье речь пойдет о blat.exe версии 3.21, Скачать архив версии 3.21 с программой и документацией на английском языке.     Утилита не требует установки, просто скачайте архив и распакуйте его в какой-нибудь каталог. Если вы планируете использовать blat.exe в командных файлах, то имеет смысл поместить ее в каталог, используемый в путях поиска исполняемых файлов по умолчанию (задаваемых переменной окружения PATH), например, \windows\system32 . При выполнении, blat.exe может использовать некоторые параметры - профиль , который хранится в реестре Windows. Профилей может быть несколько и один из них может использоваться в качестве профиля по умолчанию. Для создания профиля используется ключ -install при запуске blat.exe. blat.exe -install smtp.mail.ru test@mail.ru 3 25 profile1 test@mail.ru пароль параметры, следующие за "-install" должны располагаться именно в таком порядке: smtp.mail.ru - имя почтового сервера, через который будет выполняться отправка электронных писем test@mail.ru - имя отправителя, которое будет отображаться в поле From: 3 - число попыток повторный отправки письма при сбое соединения с сервером. 25 - номер порта SMTP-сервера profile1 - имя профиля утилиты test@mail.ru - имя пользователя, которое будет использоваться при подключении к SMTP-серверу пароль - пароль, используемый при подключении к SMTP-серверу После выполнения этой команды, в реестре будут созданы ключи, которые могут использоваться программой в качестве входных параметров. blat.exe -install smtp.mail.ru test@mail.ru 3 25 - test@mail.ru Параметры Blat.exe хранятся в ветке реестра [HKEY_LOCAL_MACHINE\SOFTWARE\Public Domain] Профиль по умолчанию хранится в ветке [HKEY_LOCAL_MACHINE\SOFTWARE\Public Domain\Blat] Настройки для конкретного профиля [HKEY_LOCAL_MACHINE\SOFTWARE\Public Domain\Blat\имя профиля] Для получения встроенной справки программы используется ключ -h blat -h - выдача справки на экран blat -h > C:\blathelp.txt - выдача справки в файл C:\blathelp.txt Даже беглый просмотр ключей, используемых программой, говорит о ее обширных возможностях, в том числе, отправку писем в любой кодировке, использование многоцелевого формата почтовых сообщений MIME, отправку с вложением файлов и т.п. Для описания всех возможностей понадобилась бы отдельная книга средних размеров, поэтому ограничусь примерами наиболее частого использования. Отправка письма с использованием профиля по умолчанию получателю test@ab57.ru: blat.exe -body "Hello World" -to test@ab57.ru Параметр -body используется для формирования текста в теле письма. Если текст содержит пробелы, то заключается в двойные кавычки. Параметр -to задает адрес получателя. Остальные данные, необходимые для отправки берутся из профиля по умолчанию (адрес SMTP- сервера, имя пользователя, пароль и т.п.). В качестве текста тела письма можно использовать содержимое файла, указав его имя вместо параметра -body blat.exe C:\mytext.txt -to test@ab57.ru Для отправки электронного письма без текста используется имя пустого файла (а не ключ -body без параметров, когда будет ожидаться ввод текста письма с клавиатуры) Если используется текст на русском языке, то нужно указать кодировку, поддерживающую символы кириллицы, для чего используется ключ --charset : blat.exe -body "Текст на русском" -to test@ab57.ru -charset utf-8 Для отправки писем с вложением файлов используется ключ -attach blat.exe -body "Текст на русском" -to test@ab57.ru -charset utf-8 -attach c:\boot.ini Если тема письма не задана, то blat.exe использует в поле темы строку Contents of file: stdin.txt. Для подавления стандартной темы можно использовать ключ -ss. Поле темы, в этом случае будет пустым. Для указания нужного текста в поле темы используется ключ -subect blat -body "TEST на русском" -subject Важно! -to test@ab57.ru -charset utf-8 -attach c:\boot.ini Для отправки письма с настройками из конкретного профиля используется ключ -p имя профиля blat.exe -body "this is text" -p profile1 -to test@domain.ru Для получения списка профилей, хранящихся в реестре на данный момент используется ключ -profile blat -profile В ответ будет выдано Blat v2.6.2 w/GSS encryption (build : Feb 25 2007 12:06:19) Profile(s) for all users of this computer -- SMTP: smtp.mail.ru "test@mail.ru" 1 25 ***** ***** SMTP: smtp.mail.ru "test321@mail.ru" 3 25 profile1 ***** ***** Первая строка, начинающаяся с SMTP: относится к профилю по умолчанию, вторая - к профилю с именем profile1 Для отправки электронного письма без использования какого-либо профиля, в командной строке blat.exe нужно задать все те данные, которые хранятся в профиле. blat -body "TEST" -to test@yandex.ru -server smtp.mail.ru -f test@mail.ru -u test@mail.ru -pw пароль Если какой-либо из параметров не задан, он будет взят из профиля по умолчанию. -server - имя сервера SMTP -f - почтовый адрес отправителя -u - имя пользователя, используемое для подключения к SMTP-серверу (AUTH LOGIN) -pw - пароль пользователя. Официальный сайт проекта Blat Страница программы Blat на Sourceforge Дополнительно к данной теме: Протокол прикладного уровня SMTP. Структура электронного письма и практика анализа заголовка. Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой "Поделиться" |