техническое · ответ с источниками

Что такое MIME (Multipurpose Internet Mail Extensions)

MIME расшифровывается как Multipurpose Internet Mail Extensions («многоцелевые расширения интернет-почты»). Это стандарт, расширяющий исходный протокол Simple Mail Transfer Protocol (SMTP), чтобы можно было передавать нетекстовое содержимое — изображения, аудио, видео и данные приложений, — а также форматированный текст, например HTML.

Как работает MIME

MIME добавляет в письмо специальные заголовки, которые сообщают почтовому клиенту получателя, как обрабатывать тело. Самый важный из них — Content-Type, определяющий медиатип данных. Например, text/plain обозначает простой текст, а text/html — форматированную веб-страницу. Если в одном письме передаётся содержимое нескольких типов, для объединения разных частей используются типы multipart/mixed или multipart/alternative.

Почему это важно для отправителей

MIME необходим для доставляемости и удобства современной почты. Без него письма были бы ограничены 7-битными символами ASCII: интернационализация была бы невозможна, а вложения — недоступны. Благодаря MIME отправители могут передавать резервную текстовую версию вместе с HTML-версией, чтобы сообщение было читаемым независимо от возможностей почтового клиента получателя.

Заметки и типичные ошибки

Частая ошибка — не указать правильную кодировку (charset) в заголовке Content-Type, что приводит к испорченным символам или «кракозябрам». Другая проблема — неверно заданные разделители (boundary) в составных сообщениях, из-за которых письмо может отображаться как исходный код или терять вложения. Разработчикам следует кодировать двоичные данные в Base64, чтобы они не повреждались при передаче через SMTP-релеи.

Конкретный пример

Типичный MIME-заголовок HTML-письма с вложением выглядит так: Content-Type: multipart/mixed; boundary=boundary_123. Внутри тела первая часть помечена как Content-Type: text/html; charset=UTF-8 — это тело сообщения, а вторая — как Content-Type: application/pdf; name=invoice.pdf — это файл. Проанализировать структуру заголовков можно с помощью SendHQ или его бесплатных инструментов (https://sendhq.cc/tools).

Механизмы кодирования

Поскольку SMTP создавался для текста, MIME использует схемы кодирования для передачи двоичных данных. Самый распространённый способ — Base64, преобразующий двоичные файлы в строку символов ASCII. Кодировка Quoted-Printable применяется для текста, который в основном состоит из ASCII, но содержит отдельные символы вне ASCII: она даёт меньше накладных расходов, чем Base64, и сохраняет совместимость со старыми почтовыми системами.

Что спрашивают команды

MIME — это то же самое, что SMTP?

Нет. SMTP — протокол, по которому письмо передаётся от одного сервера к другому, а MIME — стандарт, определяющий формат передаваемого содержимого.

Что такое MIME-тип multipart/alternative?

Он используется, когда одно и то же содержимое передаётся в нескольких форматах, например в виде простого текста и HTML, чтобы почтовый клиент мог выбрать для отображения наиболее подходящую версию.

Зачем в MIME используется Base64?

Base64 кодирует двоичные данные в текст ASCII, благодаря чему данные остаются целыми при прохождении через почтовые серверы, поддерживающие только 7-битный текст.

Можно ли использовать MIME вне электронной почты?

Да, система MIME-типов (сейчас их называют медиатипами, Media Types) используется во всём вебе, в том числе в HTTP-заголовках для описания типа скачиваемого или загружаемого файла.

Первоисточники