Опубликован: 21.11.2006 | Уровень: специалист | Доступ: платный
Лекция 5:

Протокол SMTP

Поле заголовка Content-Type

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

Тип данных text идентифицирует данные в формате ASCII, которые должны читаться в исходном виде. Здесь существует также два подкласса — plain -текст, т.е. неформатированный ASCII-текст, и enriched -текст, который включает в себя элементы форматирования, схожие с обогащенным текстовым форматом. Новейшие программы для работы с электронной почтой могут работать даже с обогащенным текстовым форматом (RTF).

Тип данных message позволяет почтовой программе отсылать простые сообщения в формате RFC 822. Подклассы этого типа: rfc822, который указывает на то, что вложением является обычное сообщение, соответствующее RFC 822; partial, который позволяет разбивать длинные сообщения на несколько частей, и external-body, который позволяет помещать указатель на объект, не являющийся частью сообщения.

Тип данных image определяет вложение в сообщение двоичных данных, которые представляют собой графическое изображение. В настоящее время для этого типа определено два подкласса — jpeg и gif.

Тип данных video, соответственно, определяет, что вложенные в сообщение данные представляют собой видеоданные. В настоящее время для этого типа определен только один подкласс — формат mpeg.

Тип данных audio обозначает содержимое сообщения как аудиоданные (звуковые файлы). Здесь также пока определен только один подкласс basic, который соответствует одному каналу ISDN с частотой дискретизации 8 Кгц.

Тип данных application соответствует двоичным данным, вложенным в сообщение, которые являются приложением (например, электронные таблицы Microsoft Excel или документы, созданные с помощью текстового процессора Microsoft Word). На сегодняшний день определено два подкласса такого рода данных — postscript и octet-stream. Довольно часто подкласс octet-stream используется при вложении в сообщение прикладных данных, таких как документы Microsoft Word или электронные таблицы Microsoft Excel.

Тип данных multipart идентифицирует сообщения, содержащие несколько различных типов данных. Этот формат довольно часто встречается в почтовых программах, поддерживающих вывод сообщения несколькими способами, например в виде текста ASCII, HTML-текста или аудиофайла. Граничный идентификатор разделяет различные типы данных. В то же время каждый тип данных идентифицируется определенным полем заголовка типа данных. Тип данных multipart имеет четыре подкласса.

Подкласс mixed указывает на то, что каждая из частей сообщения является независимой и все они должны быть представлены получателю в том порядке, в каком они были вложены отправителем. Подкласс parallel указывает то, что каждая из частей сообщения является независимой и все они могут быть представлены получателю в любом порядке. Следующий подкласс alternative указывает, что все части сообщения представляют собой одни и те же данные, но представленные в различном виде. При этом получатель может выбрать наилучшее средство для просмотра полученных данных. Подкласс digest во многом сходен с подклассом mixed, но при этом указывает, что тело сообщения всегда представляется в формате RFC822.

1 [rich@shadrach rich]$ telnet localhost 25
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 220 shadrach.smallorg.org ESMTP Sendmail 8.9.3/8.9.3; Mon, 30 Aug 1999 07:36:58 -050
6 HELO localhost
7 258 shadrach.smallorg.org Hello localhost [127.0.0.1] , pleased to meet you
8 MAIL FROM:rich@localhost
9 250 rich@localhost... Sender ok
10 RCPT TO:rich
11 250 rich... Recipient ok
12 DATA
13 354 Enter mail, end with "." on a line by itself
14 From:"Rich Blum" <rich@localhost>
15 To:"rich"<rich©localhost>
16 Subject:Formatted text message test
17 MIME-Version: 1.0
18 Content-Type: multipart/alternative; boundary=bounds1
19
20 –bounds1
21 Content-Type: text/plain; charset=us-ascii
22
23 This is the plain text part of the message that can
24 be read by simple e-mail readers.
25
26 –-bounds1
27 Context-Type: text/enriched
28
29 This is the <bold>rich text</bold> version of the <bigger>SAME</bigger> message.
30
31 –-bounds1--
32 .
33 250 MAA04305 Message accepted for delivery
34 QUIT
35 221 shadrach.smallorg.org closing connection
36 Connection closed by foreign host.
37 You have new mail in /var/spool/mail/rich
38 [rich@shadrach rich]$
Листинг 5.6. Пример сеанса SMTP с несколькими вложениями MIME

Пример сообщения, представленный в листинге 5.6, является сообщением MIME, которое состоит из двух частей. В строке 18 показан тип данных сообщения. Тип multipart/alternative указывает на то, что в сообщении имеются различные типы данных, которые отделены граничным разделителем bounds1. Данные первого типа начинаются со строки 21 и представляют собой простой ASCII-текст, который может прочесть практически любая почтовая программа.

Данные второго типа начинаются со строки 27 и представляют собой форматированный текст с использованием обогащенного текстового формата. Так как тип MIME, указанный для сообщения, — multipart/alternative, то определение того, какую версию вложения отобразить, всецело зависит от почтовой программы. На рис. 5.3 показан пример отображения сообщения с помощью программы Netscape Mail. Обратите внимание на то, что обычный текст в формате ASCII был отвергнут, и для вывода на экран была использована версия с форматированным обогащенным текстом сообщения. В обеих частях обычного почтового сообщения содержится одно и то же. Содержимое частей сообщения было сделано различным лишь для того, чтобы показать вам, какую из версий сообщения выберет для отображения программа для чтения почты.

Чтение MIME-сообщения, содержащего несколько вложений с помощью программы Netscape Mail

Рис. 5.3. Чтение MIME-сообщения, содержащего несколько вложений с помощью программы Netscape Mail
Чтение MIME-сообщения, содержащего несколько вложений с помощью программы The Bat

Рис. 5.4. Чтение MIME-сообщения, содержащего несколько вложений с помощью программы The Bat
Valentin Diduk
Valentin Diduk
Украина, одесса, кпи, 2010
Евгений Олабин
Евгений Олабин
Беларусь, Гродно