Скачиваний:
60
Добавлен:
22.01.2014
Размер:
258.56 Кб
Скачать

7.4 Расширения smtp-сервиса для передачи 8-битных данных

В предыдущих разделах мы рассматривали работу SMTPс 7-битными сооб­щениями. Такие сообщения поддерживаются всеми серверамиSMTP. По­этому, если информация, которую необходимо передать, содержит не толькоASCII-символы,а отправитель не знает, какая почтовая система у его адре­сата, он, как правило, кодирует всю передаваемую информацию в 7-битный вид. Например, если и отправитель и получатель поддерживаютMIME, объ­екты сообщения можно представить в кодировках "quoted-printable" или "base64".

Однако, если SMTP-серверадресата поддерживает расширенияSMTP(ESMTP) для передачи 8-битных данных в формате "MIME8bit", отправи­тель может не беспокоиться о кодировании и передавать поSMTPвсе 8бит.

Для того чтобы проверить, поддерживает ли SMTP-серверрасширения "MIME 8bit",отправьте команду приветствияEHLO —это прототип коман­ды HELOдля ESMTP.Ответом на это приветствие должны быть строчки"250OK" и "2508В1ТМ1МЕ":

С: EHLO <client.domain>

S: 250-<server.domain> says hello

S: 250 8В1ТМ1МЕ

Примечание

В ESMTPкомандаMAILприобрела новый аргумент:BODY, который может прини­мать значения: "7В1Т" или "8В1ТМ1МЕ".

Подайте команду MAILс аргументом "BODY=8BITMIME". Если сервер от­вечает кодом "250",начинайте передавать 8-битные данные. Ниже представ­лен пример сценария передачи 8-битных данных через ESMTP:

С: EHLO ymir.claremont.edu

S: 250-dbc.mtview.ca.us says hello

S: 250 8В1ТМ1МЕ

С: MAIL FROM;<ned@ymir.claremont.edu> BODY=8BITMIME

S: 250 <ned@ymir.claremont.edu>... Sender and 8BITMIME ok

C: RCPT T0:<mrose@dbc.mtview.ca.us>

S: 250 <mrose@dbc.mtview.ca,us>... Recipient ok

С; DATA

S: 354 Send 8BITMIME message, ending in CRLF.CRLF.

. . .

C: ,

S: 250 OK

Однако при выборе такого способа передачи необходимо помнить, что фор­мат данных MIME-сообщениядолжен быть "8bit", т. е. остаютсявсиле огра­ничения на размер строки SMTP-сообщения,которая составляет 1000байт.

Для преодоления этого неприятного ограничения на размер строки и пере­дачи по SMTPтипа "binary" рисунков, видео и др. больших массивов бинар­ных данных, служит еще одно расширениеSMTP, часто называемое какCHUNKING.

CHUNKING-сервисиспользует вместо старой командыDATAрасширен­ную команду—BDAT. Данное расширение поддерживает как типы 7bit.8BITMIMEтак иBINARYMIME, который и позволяет передавать большие объемы двоичных данных.

Для того чтобы узнать, поддерживает ли данный SMTP-серверсервисCHUNKING, подайте команду приветствияEHLO. Если ответ содержит строку "250CHUNKING", это значит, что серверSMTPможет работать с командой BDAT.Команда BDAT —это простое расширение функциональ­ности командыDATA, т. е. вы можете без каких-либо ограничений при от­правке 7-битных данных вместоDATAиспользовать команду BDAT.

Примечание

Нельзя использовать команды DATAи BDATв одной SMTP-транзакции.

Команда BDATимеет следующий формат:

BDAT chunk-size [LAST]

где <chunk-size> —размер порции передаваемых данных, а ключевое словоLASTуказывает, что следующая порция информации —последняя.

Для того чтобы отправить данные в формате BINARYMIME, команда от­правки —MAILдолжна содержать параметрBODY=BINARYMIME. Затем, используя команду BDAT,передавайте вашу информацию. Ниже представ­лен пример передачи большого бинарного файла (R —получатель, S —от­правитель SMTP-сообщения).

R: <wait for connection on TCP port 25>

S: <open connection to server>

R: 220 server, esmtp. us SMTP service ready S: EHLO client, edu

R: 250-server.esmtp.us says hello R: 250-PIPELINING R: 250-BINARYMIME R: 250 CHUNKING

S: MAIL FROM:<one@client.edu> BODY=BINARYMIME S: RCPT T0:<two@server.esmtp.us> R: 250 <one@client.edu>... Sender and BINARYMIME ok R: 250 <two@server.esmtp.us>. . . Recipient ok S: BDAT 100000

S: (First 10000 octets of canonical MIME message data) S: BDAT 324 LAST

S: (Remaining 324 octets of canonical MIME message data) R: 250 100000 bytes received R: 250 Message OK, 100324 octets received

S: QUIT R: 221 Goodbye

Эти способом вы можете пользоваться и при передаче 7-битных данных.