Тестовая отправка email из telnet в нужной кодировке

Иногда нужно проверить работу почтового сервера, посмотреть, как он отвечает на те или иные команды. Или например отправить сообщение из простого скрипта (.bat), не используя сторонние программы.
Для этих целей я расскажу, как это сделать и как в теле письма отправить текст на русском языке в нужной кодировке (UTF-8 или KOI8-R).

Первым делом находим имя почтового сервера (для примера возьмем mail.ru):

# nslookup -type=mx mail.ru

В ответ получим:

mail.ru mail exchanger = 10 mxs.mail.ru.

Authoritative answers can be found from:
mxs.mail.ru internet address = 94.100.180.150
mxs.mail.ru internet address = 217.69.139.150

Теперь подключимся к серверу по телнету:

# telnet mxs.mail.ru 25

Ответ:

Trying 217.69.139.150…
Connected to mxs.mail.ru.
Escape character is ‘^]’.
220 Mail.Ru ESMTP

Представимся почтовым сервером, с которого мы отправляем письмо:

HELO мой_почтовый_сервер

Ответ:

250 mx12.mail.ru ready to serve

Вводим адрес отправителя:

MAIL FROM: <test@мой_домен>

Ответ:

250 OK

Вводим адрес получателя:

RCPT TO: <[email protected]>

Ответ:

250 OK

Вводим ключевое слово, обозначающее начало тела самого письма:

DATA

Ответ:

354 Go ahead

Далее формируем заголовок письма и его текст, к примеру напишем тему письма «test» и текст «ok» (текст пишется между двумя переносами строки). Точка в конце сообщения на новой строке говорит, что письмо сформировано и отправлено:

subject: test

ok

.

Ответ от сервера, что он принял наше письмо.

250 OK id=1c06FT-0006nm-LA

Наше письмо отправлено!

В теле письма могут быть и русские символы и даже html верстка. Единственное, предварительно текст должен быть правильно скодирован.
К примеру, что бы в поле «Тема» написать «тест», нужно в заголовок письма добавить такую строчку:

subject: =?koi8-r?B?9MXT1A==?=

Что бы перевести понятный нам текст в текст понятный для сервера, воспользуемся онлайн сервером-декодером http://foxtools.ru/Base64
Текст внутри заголовка должен находиться в кодировке BASE64. В данном примере я выбрал изначальную кодировку KOI8-R.

telnet_mail_03
А =?koi8-r?B?НАШ_ТЕКСТ_В_BASE64?= говорит о изначальной кодировке текста.

Чтобы написать текст на русском внутри сообщения нам так же его надо перевести в BASE64, а в заголовок письма добавить поля сообщающие серверу изначальную кодировку текста.
В данном примере, я выбрал кодировку UTF-8:

telnet_mail_04

Что бы сервер её понял в заголовок пропишем следующие строки:

Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64

В итоге после поля DATA, наше сообщение будет выглядеть так:

subject: =?koi8-r?B?9MXT1A==?=
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64

0J/RgNC40LLQtdGCINC80LjRgCE=

.

Так же текст сообщения можно формировать в html. Пример сообщени:

Content-Type: text/html; charset=utf-8

<div style=»text-align:center;»>Привет <span style=»color:#ff0000;»>МИР</span>!</div>

.

Ну и в качестве бонуса посоветую онлайн сервис, через который можно потестировать отправку сообщений http://telnet-online.net/

Добавить комментарий

Ваш адрес email не будет опубликован.