Открыть сервис

MIME

MIME (Multipurpose Internet Mail Extensions, многоцелевые расширения интернет-почты) — это стандарт, описывающий формат передачи данных, не являющихся простым текстом в кодировке ASCII, через протоколы электронной почты (SMTP). MIME расширяет возможности оригинального почтового протокола RFC 822, позволяя вкладывать в письма изображения, аудио, видео, исполняемые файлы, а также использовать несколько кодировок текста (в том числе кириллицу) и оформлять сообщения в формате HTML. Стандарт определён в серии документов RFC (Request for Comments), основными из которых являются RFC 2045, RFC 2046, RFC 2047, RFC 4288 и RFC 4289.

История и предпосылки создания

До появления MIME протокол электронной почты (SMTP) был строго ограничен передачей только 7-битного текста в кодировке US-ASCII. Это означало, что отправить фотографию, программу или даже простое письмо с русскими буквами было невозможно без дополнительных ухищрений (например, ручного кодирования в UUencode). С ростом популярности Интернета в конце 1980-х — начале 1990-х годов потребность в передаче нетекстовых данных стала критической.

В 1991 году группа инженеров под руководством Натана Боренштейна (Nathan Borenstein) и Неда Фрида (Ned Freed) представила первую версию спецификации MIME. Целью было создание обратно совместимого расширения, которое позволяло бы старым почтовым клиентам хотя бы частично отображать новые типы данных (например, показывать предупреждение о невозможности отображения вложения). Стандарт быстро получил широкое распространение и лёг в основу не только электронной почты, но и других протоколов, таких как HTTP (где тип содержимого передаётся в заголовке Content-Type).

Основные компоненты стандарта

Стандарт MIME определяет несколько ключевых механизмов, которые позволяют упаковывать и передавать нетекстовые данные.

Заголовки MIME

Для описания содержимого письма используются специальные заголовки, добавляемые к стандартным почтовым заголовкам (From, To, Subject и т.д.):

Типы содержимого (Media Types)

Стандарт MIME ввёл иерархическую систему типов содержимого, которая позже была принята и расширена для HTTP. Тип состоит из двух частей: основной тип (class) и подтип (subtype), разделённых косой чертой. IANA (Internet Assigned Numbers Authority) ведёт официальный реестр типов MIME.

Основные категории типов:

Кодировки передачи (Content-Transfer-Encoding)

Поскольку SMTP изначально поддерживал только 7-битные символы, а MIME-сообщения могут содержать 8-битные символы (например, кириллицу) или двоичные данные, необходимо преобразование. Стандарт определяет несколько схем кодирования:

Структура MIME-сообщения

MIME-сообщение представляет собой обычное RFC 822-письмо с добавленными заголовками MIME. Тело сообщения может быть как простым (один блок данных), так и составным (multipart).

Пример простого письма с HTML-содержимым: ``` From: user@example.com To: recipient@example.com Subject: Привет! MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

<html><body><h1>=D0=9F=D1=80=D0=B8=D0=B2=D0=B5=D1=82!</h1></body></html> ```

Пример составного письма с текстом и вложением (multipart/mixed): ``` From: user@example.com To: recipient@example.com Subject: Письмо с вложением MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="---=_NextPart_001_0000_01D8A1B2"

This is a multi-part message in MIME format.

---=_NextPart_001_0000_01D8A1B2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit

Текст письма.

---=_NextPart_001_0000_01D8A1B2 Content-Type: image/png; name="photo.png" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="photo.png"

iVBORw0KGgoAAAANSUhEUgAA... ---=_NextPart_001_0000_01D8A1B2-- `` В этом примере boundary — строка, которая разделяет части составного сообщения. Каждая часть имеет свои заголовки Content-Type и Content-Transfer-Encoding. Сообщение заканчивается строкой boundary` с двумя дефисами в конце.

Применение MIME

Хотя MIME изначально создавался для электронной почты, его влияние вышло далеко за её пределы:

Критика и ограничения

Несмотря на широкое распространение, MIME имеет ряд недостатков:

Источники

  1. RFC 2045 — Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies.
  2. RFC 2046 — Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types.
  3. RFC 2047 — MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text.
  4. RFC 4288 — Media Type Specifications and Registration Procedures.
  5. RFC 4289 — Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures.
  6. IANA Media Types Registry.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →