Протокол MIME

Понимание заголовков MIME

Заголовки MIME содержат информацию о протоколе.

MIME-Version

Это указывает, что сообщение имеет формат MIME. Выглядит так:

MIME-Version: 1.0

Content-Type

Это указывает тип содержимого сообщения, задаётся парой тип/подтип: text/plain, text/html и т.д. Тип multipart может содержать текст, HTML, вложения, изображения, аудио, видео и т.п.

Content-Type: multipart

Content-Transfer-Encoding

Указывает, используется ли схема кодирования из двоичного в текст поверх той, что указана в content-type. Если используется, указывает какую. Здесь можно задать тип кодирования 7‑bit, 8‑bit или binary.

Encoded-Word

Заголовки сообщений SMTP обычно используют ASCII‑символы. Не‑ASCII символы должны использовать синтаксис MIME‑encoded word вместо буквального текста. Формат:

"=? charset ? encoding ? encoded text ?=".

Multipart‑сообщения

MIME‑multipart сообщение содержит границу в заголовке content-type. Эта граница, которой не должно быть в любой части, помещается между частями и в начале и в конце тела сообщения, как показано ниже:

MIME-version: 1.0


 Content-type: multipart/mixed; boundary="frontier"

This is a multi-part message in MIME format.

--frontier

Content-type: text/plain

This is the body of the message.

--frontier

Content-type: application/octet-stream

Content-transfer-encoding: base64

PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg

Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==

--frontier--

Каждая часть состоит из собственного заголовка содержимого и тела.

Подтипы Multipart

Стандарт MIME определяет различные подтипы multipart‑сообщений. Подтип указывается в заголовке "Content-Type" общего сообщения.

Ниже представлен список наиболее часто используемых подтипов.

  • Mixed: multipart/mixed используется для отправки файлов с различными заголовками "Content-Type" встроенно. При отправке изображений или других легко читаемых файлов большинство почтовых клиентов отображают их встроенно.
  • Message: часть Message содержит электронное письмо.
  • Digest: digest — простой способ отправки нескольких текстовых сообщений. Тип содержимого по умолчанию для каждой части — "message/rfc822".
  • Alternative: Подтип alternative указывает, что каждая часть является "альтернативной" версией одного и того же (или схожего) содержимого, каждая в другом формате, указанном в заголовке "Content-Type".

Наиболее распространённый multipart/alternative используется для писем с двумя частями: простой текст (text/plain) и HTML (text/html). Текстовая часть обеспечивает совместимость со старыми клиентами, а HTML‑часть позволяет использовать форматирование и гиперссылки. Большинство почтовых клиентов предлагают пользователю опцию предпочитать простой текст перед HTML; это пример того, как локальные факторы могут влиять на выбор приложением «лучшей» части сообщения для отображения.