Мы говорили, что RFC 822 описывает тело сообщения как строки NVT ASCII текста, без структуры. RFC 1521 [Borenstein and Freed 1993] определяет расширения, которые позволяют вводить структуру в тело сообщения. Это называется многофункциональным расширением почты Internet (MIME - Multipurpose Internet Mail Extensions).
MIME не требует тех расширений, что мы описали ранее в этом разделе (расширенный SMTP или не-ASCII заголовки). MIME просто добавляет некоторые новые заголовки (в соответствии с RFC 822), которые сообщают получателю о структуре тела сообщения. Тело сообщения может передаваться с использованием NVT ASCII, вне зависимости от содержимого почты. Несмотря на это некоторые из расширений, которые мы только что описали, могут быть вполне уместны при использовании вместе с MIME - команда SIZE расширенного SMTP, так как MIME сообщения могут быть довольно большими, и не-ASCII заголовки, эти расширения не требуются для MIME. Все что требуется для обмена MIME сообщениями с другой стороной - необходимо, чтобы на обоих концах присутствовали пользовательские агенты, которые понимают MIME. На промежуточных MTA не требуется никаких изменений.
MIME определяет пять новых полей заголовков:
Mime-Version:
Content-Type:
Content-Transfer-Encoding:
Content-ID:
Content-Description:
В качестве примера, приведены две строки заголовка, которые могут присутствовать в почтовом сообщении Internet:
Mime-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Текущая версия MIME - 1.0, в которой сообщения выглядят как простой ASCII текст, что является форматом по умолчанию для почты Internet. Слово PLAIN определяет подтип типа содержимого (TEXT), а строка charset=US-ASCII это параметр.
Text это всего лишь один из семи определенных в MIME типов содержимого. На рисунке 28.7 приводится краткое описание 16 различных типов содержимого и подтипов, определенных в RFC 1521. Для конкретных типов содержимого и подтипов может быть определено большое количество параметров.
Тип содержимого и кодирование при передаче, применяемое к телу сообщения, независимы друг от друга. Здесь указаны поле заголовка Content-Type (тип содержимого) и поле заголовка Content-Transfer-Encoding (кодирование содержимого при передаче). В RFC 1521 определено пять различных форматов кодирования.
Тип содержимого | Подтип | Описание |
text | plain | Неформатированный текст. |
richtext | Текст с простым форматированием, как, например, выделение жирным шрифтом, курсивом, подчеркивание и так далее. | |
enriched | Прояснение, упрощение и усовершенствование richtext. | |
multipart | mixed | Несколько частей тела сообщения обрабатываются последовательно. |
parallel | Несколько частей тела сообщения могут быть обработаны параллельно. | |
digest | Краткое изложение почты. | |
alternative | Присутствует несколько частей тела сообщения, все с идентичным семантическим содержанием. | |
message | rfc822 | Содержимое это еще одно почтовое сообщение RFC 822. |
partial | Содержимое это фрагмент почтового сообщения. | |
external-body | Содержимое это указатель на реальное сообщение. | |
application | octet-stream | Произвольные двоичные данные. |
postscript | Программа PostScript. | |
image | jpeg | Формат ISO 10918. |
gif | Формат CompuServe's Graphic Interchange. | |
audio | basic | Кодирование с использованием 8-битного ISDN формата m -law. |
video | mpeg | Формат ISO 11172. |