Протокол расширений Интернет-почты многофункционального назначения
Расширения Интернет-почты многофункционального назначения (MIME) — это интернет-стандарт, который расширяет формат электронной почты для поддержки:
- текста в наборах символов, отличных от US-ASCII;
- вложений, не являющихся текстом;
- многосоставных тел сообщений; и
- заголовочной информации в наборах символов, отличных от ASCII.
SMTP поддерживает только 7-битные ASCII символы, что эффективно означает, что он поддерживает только небольшое количество языков. Языки на основе латинского алфавита нормально работают в SMTP; другие языки отображаются некорректно при доставке электронной почты. Однако MIME расширяет поддержку ASCII символов в SMPT, чтобы электронные письма с использованием других наборов символов, изображений и звуков могли быть отправлены и отображены. Как правило, все почтовые клиенты и SMTP-серверы правильно сопоставляют сообщения формата MIME.
Понимание заголовков MIME
Заголовки MIME содержат информацию о протоколе.
MIME-Version
Это указывает на то, что сообщение имеет формат MIME. Он выглядит как:
MIME-Version: 1.0
Content-Type
Это указывает на тип содержимого сообщения, представленный в виде пары тип и подтип: text/plain, text/html, например. Многосоставной тип содержимого может содержать текст, HTML, вложения, изображения, аудио, видео и так далее.
Content-Type: multipart
Content-Transfer-Encoding
Указывает, используется ли схема кодирования бинарного текста поверх кодирования, указанного в типе содержимого. Если да, то указывает, какая именно. Здесь мы можем указать 7-битный, 8-битный и бинарный тип кодирования.
Encoded-Word
Заголовки сообщений SMTP обычно используют символы ASCII. Для не-ASCII символов вместо буквальной строки необходимо использовать синтаксис закодированного слова MIME. Формат выглядит следующим образом:
“=? charset ? encoding ? encoded text ?=”.
Multipart-Messages
Многосоставное сообщение MIME содержит границу в заголовке типа содержимого. Эта граница, которая не должна встречаться ни в одной из частей, помещается между частями, а также в начале и в конце тела сообщения, как показано ниже:
MIME-version: 1.0
Content-type: multipart/mixed; boundary="frontier"
Это многосоставное сообщение в формате MIME.
--frontier
Content-type: text/plain
Это тело сообщения.
--frontier
Content-type: application/octet-stream
Content-transfer-encoding: base64
PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
--frontier--
Каждая часть состоит из своего собственного заголовка содержимого и тела.
Multipart Subtypes
Стандарт MIME определяет различные подтипы многосоставных сообщений. Подтип указывается в заголовке “Content-Type” общего сообщения.
Следующий список включает наиболее commonly используемые подтипы.
- Mixed: Multipart/mixed используется для отправки файлов с разными заголовками “Content-Type” встроенными. При отправке изображений или других легко читаемых файлов большинство почтовых клиентов будут отображать их встроенными.
- Message: Часть сообщения содержит электронное сообщение.
- Digest: digest — это простой способ отправить несколько текстовых сообщений. Тип содержимого по умолчанию для каждой части — “message/rfc822”.
- Alternative: Альтернативный подтип указывает на то, что каждая часть является “альтернативной” версией одного и того же (или похожего) содержимого, каждая в другом формате, обозначенном заголовком “Content-Type”.
Наиболее часто multipart/alternative используется для электронной почты с двумя частями, одна из которых в простом тексте (text/plain), а другая в HTML (text/html). Часть с простым текстом обеспечивает обратную совместимость, в то время как HTML часть позволяет использовать форматирование и гиперссылки. Большинство почтовых клиентов предлагают пользователю возможность предпочесть простой текст перед HTML; это пример того, как локальные факторы могут повлиять на то, какую “лучшую” часть сообщения приложение выбирает для отображения.