Формат представления почтовых сообщений MIME



Стандарт MIME(или, в нотации Internet, RFC-1341) предназначен для описания тела почтового сообщения Internet. Предшественником MIME является стандарт почтового сообщения ARPA (RFC822). Стандарт RFC-822 был разработан для обмена текстовыми сообщениями. С момента опубликования стандарта возможности аппаратных средств и телекоммуникаций ушли далеко вперед, и стало ясно, что многие типы информации, которые широко используются в сети, невозможно передать по почте без специальных преобразований. Так, в тело сообщения нельзя включить графику, аудио, видео и другие типы информации. RFC-822 не дает возможностей для передачи даже текстовой информации, которую нельзя реализовать 7-битовой кодировкой ASCII. Естественно, что при использовании RFC-822 не может быть и речи о передаче размеченного текста для отображения его различными стилями. Ограничения RFC-822 становятся еще более очевидными, когда речь заходит об обмене сообщениями в разных почтовых системах. Например, для приема/передачи сообщений из/в X.400 (новый стандарт ISO), который позволяет иметь двоичные данные в теле сообщения, ограничения старого стандарта могут быть фатальными, так как не спасает испытанный способ кодировки информации процедурой uuencode, так как эти данные могут быть по-различному проинтерпретированны в X.400 и в программе рассылки почты в Internet (mail-agent).

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

В стандарте зарезервировано несколько способов представления разнородной информации. Для этого используются специальные поля эаголовка почтового сообщения:

· поле версии MIME, которое используется для идентификации сообщения, подготовленного в новом стандарте;

· поле описания типа информации в теле сообщения, которое позволяет обеспечить правильную интерпретацию данных;

· поле типа кодировки информации в теле сообщения, указывающее на тип процедуры декодирования;

· два дополнительных поля, зарезервированных для более детального описания тела сообщения.

Стандарт MIME разработан как расширяемая спецификация, в которой подразумевается, что число типов данных будет расти по мере развития форм представления данных. При этом следует учитывать, что анархия типов (безграничное их увеличение) тоже недопустима. Каждый новый тип в обязательном порядке должен быть зарегестрирован в IANA (Internet Assigned Numbers Authority). Остановимся подробнее на форме и назначении полей, определяемых стандартом.

Поле версии MIME (MIME-Version)

Поле версии указывается в заголовке почтового сообщения и позволяет программе рассылки почты определить, что сообщение подготовлено в стандарте MIME. Формат поля выглядит как:

MIME-Version: 1.0

Поле версии указывается в общем заголовке почтового сообщения и относится ко всему сообщению целиком. Здесь уместно отметить, что в отличии от стандарта RFC-822 стандарт MIME позволяет перемешивать поля заголовка сообщения с телом сообщения. Поэтому все поля делятся на два класса: общие поля заголовка, которые записываются в начале почтового сообщения, и частные поля заголовка, которые относятся только к отдельным частям составного сообщения и записываются перед ними.

Поле типа содержания тела почтового сообщения (Content-Type)

Поле типа используется для описания типа данных, которые содержатся в теле почтового сообщения. Это поле сообщает программе чтения почты, какого сорта преобразования необходимы для того, чтобы сообщение правильно проинтерпретировать. Эта же информация используется и программой рассылки при кодировании/декодировании почты. Стандарт MIME определяет семь типов данных, которые можно передавать в теле письма:

· текст (text);

· смешанный тип (multipart);

· почтовое сообщение (message);

· графический образ (image);

· аудио-информация (audio);

· фильм или видео (video);

· приложение (application).

Остановимся подробнее на каждом из типов, разрешенных стандартов MIME.

Text. Этот тип указывает на то, что в теле сообщения содержится текст. Основным подтипом типа "text" является "plain", что означает так называемый планарный текст. Понятие планарного текста появилось в связи с тем, что существует еще размеченный текст, т.е. текст со встроенными в него символами управления отображением, и гипертекст, т.е. текст, который можно просматривать не последовательно, а произвольно, следуя гипертекстовым ссылкам. Для обозначения размеченного текста используют подтип "richtext", а для обозначения гипертекста - подтип "html". Вообще говоря, "html" - это специальный вид размеченного текста, который используется для представления гипертекстовой информации в системе World Wide Web, которая получила в последнее время широкое распространение в Internet. Понятие размеченного текста требует более подробного обсуждения, так как его передача и интерпретация являются одной из причин появления стандарта MIME.

"Richtext" определяет текст со встроенными в него специальными управляющими последовательностями, которые в соответствии со стандартом языка разметки документов SGML (Stadard Generalized Markup Language) называются тагами. Таги представляют из себя последовательность символов типа "<строка-символов>". "Строка-символов" определяет управляющее действие. Таги делятся на таги начала элемента текста ("<...>") и таги конца элемента текста ("</...>"). В качестве примера такой разметки можно привести следующий фрагмент текста:

<bold>Now</bold> is the time for

<italic>all</italic> good men

<smaller>(and <lt>women>)</smaller> to

<ignoreme></ignoreme>come

to the aid of their

<nl>

В этом фрагменте <bold>означает выделение "жирным" шрифтом, <italic>- курсив, <smaller>- мелкий шрифт, <lt>- знак "<", игнорирование обозначено как <ignoreme>, новая строка как <nl>. далее приведен полный перечень управляющих последовательностей: Bold "жирный" шрифт Italic курсив Fixed causes the subsequent text to be in a fixed width font Smaller уменьшенный шрифт Bigger увеличенный шрифт Underline подчеркнутый текст Center отцентрированный текст FlushLeft выровненный по левому краю FlushRight выровненный по правому краю Indent отступ от левого края IndentRight отступ от правого края Outdent отмена левого отступа OutdentRight отмена правого отступа SamePage размещение текста на одной странице Subscript подстрочный текст Superscript надстрочный текст Heading заголовок Footing текст ссылки ISO-8859-X текст в кодировке ISO-8859-X US-ASCII текст в кодировке US-ASCII Excerpt цитата Paragraph параграф Signature автограф (подпись) Comment комментарий (не отображается) No-op нет операции lt знак "меньше" ("<") nl новая строка np новая страница

Специальный тип разметки задается подтипом "html". Это так называемый гипертекст. Разметка гипертекста строится по тому же принципу, как и в тексте типа "richtext". Однако применяются таги, позволяющие описать гипертекстовые ссылки. К таким тагам относятся "<A HREF="...">...</A>", <IMG...>, <A NAME="..."> </A>. Таг "<A HREF="...">...</A>" определяет следующий фрагмент текста, который будет просматриваться. При этом текст между тагом начала и тагом конца выделяется в программе просмотра цветом или другим способом и используется как контекстная гипертекстовая ссылка. Таг <IMG...>задает встроенный в текст документа графический образ. В некотором смысле этот таг аналогичен "multipart", который разрешает комбинировать сообщение из нескольких фрагментов разного типа. Таг <A NAME="..."> </A>определяет "якорь", т.е. место внутри документа, на которое можно сослаться как на метку.

Multipart. Этот тип содержания тела почтового сообщения определяет смешанный документ. Смешанный документ может состоять из фрагментов данных разного типа. Данный тип имеет ряд подтипов.

Подтип "mixed" может создавать сообщения, состоящие из нескольких фрагментов, которые разделены между собой границей, задаваемой в качестве параметра подтип.

Поле "Content-Type" определяет подтип "mixed" и границу между фрагментами, как строку "--simple boundary--". В начале каждого фрагмента может быть задана своя строка с полем "Content-Type". Существует два фрагмента, которые не отображаются: преамбула и эпилог, в которые можно поместить комментарии.

Другим подтипом может быть подтип "alternative". Данный подтип позволяет организовать вариабельный просмотр почтового сообщения в зависимости от типа программы просмотра.

Подтип "digest" предназначен для многоцелевого почтового сообщения, когда различным частям хотят приписать более детальную информацию, чем просто тип:

From: Moderator-Address

MIME-Version: 1.0

Subject: Internet Digest, volume 42

Content-Type: multipart/digest;

boundary="---- next message ----"

------ next message ----

From: someone-else

Subject: my opinion

... body goes here...

------ next message ----

From: someone-else-again

Subject: my different opinion

...another body goes here...

------ next message ------

Приведенный пример показывает, как можно воспользоваться подтипом "digest" для рассылки разным пользователям и по разному поводу почты, используя поля "From" и "Subject" в качестве частных заголовков.

Подтип "parallel" предназначен для составления такого почтового сообщения, части которого должны отображаться одновременно, что предполагает запуск сразу нескольких программ просмотра. Синтатсис такого сообщения аналогичен рассмотренным выше.

Тип "message" предназначен для работы с обычными почтовыми сообщениями, которые, однако, не могут быть переделаны по почте по разного рода причинам. Эти причины объясняются подтипами данного типа.

Подтип "partial" предназначен для передачи одного большого сообщения по частям для последующей автоматической сборки у получателя.

Атрибуты подтипа определяют идентификатор сообщения (id), номер порции (number) и общее число порций (total). Следует обратить внимание на то, что каждая часть имеет свое поле "Content-Type". Это означает, что все сообщение может состоять из частей разных типов.

Другим подтипом является "External-Body", который позволяет ссылаться на внешние относительно сообщения информационные источники.

Стандартным подтипом типа "message" является "rfc822". Данный подтип определяет сообщения стандарта RFC-822.

Типы описания нетекстовой информации. Таких типов имеется четыре:

· "image" для описания графических образов. Наиболее часто используются файлы форматов GIF и JPEG.

· "audio" для описания аудиоинформации. Для воспроизведения сообщения данного типа требуется специальное оборудование.

· "video" для передачи фильмов. Наиболее популярным является формат MPEG.

· "application" для передачи данных любого другого формата. Обычно используется для передачи двоичных данных с последующим промежуточным преобразованием. Так, если на машине стоит видеокарта с 512Kb памяти, а графика подготовлена в 256 цветах, то сначала ее следует преобразовать, и здесь может помочь тип "application". Основной подтип данного типа - "octet-stream", но существуют "ODA" и "Postscript". Назначение данных подтипов ясно из названия - обозначение данных для последующей обработки как данных в форматах, определяемых подтипом.

Поле типа кодирования почтового сообщения (Content-Transfer-Encoding)

Многие данные передаются по почте в их исходном виде. Это могут быть 7bit символы, 8bit символы, 64base символы и т.д. Однако при работе в разнородных почтовых средах необходимо определить механизм их представления в стандартном виде - US-ASCII. Для этого существуют процедуры кодирования такого сорта данных. Наиболее широко применяемая - uuencode. Для того, чтобы при получении данные были бы правильно распакованы, в стандарте введено поле "Content-Transfer-Encoding". Синтаксис этого поля следующий:

Content-Transfer-Encoding :="BASE64" / "QUOTED-PRINTABLE" /

"8BIT" / "7BIT" / "BINARY" / x-token

Каждая из альтернатив применяется в своем подходящем случае. Альтернативы "8bit", "7bit", "BINARY" реально никакого преобразо-вания не требуют, так как почта передается байтами и SMTP не делает различия между ними. Однако они введены для строгости описания типов. "BASE64" обычно используется в связке с типом "text/ISO-8859-1". Элемент "x-token" позволяет пользователю описать свою процедуру преобразования.


Дата добавления: 2018-04-05; просмотров: 549; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!