Протокол розширень інтернет-пошти (MIME)
Multipurpose Internet Mail Extensions (MIME) — це інтернет‑стандарт, який розширює формат електронної пошти, щоб підтримувати:
- текст у кодуваннях, відмінних від US-ASCII;
- нез текстові вкладення;
- багаточастинні тіла повідомлень; і
- заголовкову інформацію у не‑ASCII кодуваннях.
SMTP підтримує лише 7‑бітові ASCII‑символи, що фактично означає, що він підтримує лише невелику кількість мов. Мови, засновані на латинському алфавіті, підходять для SMTP; інші мови не відображаються правильно під час доставки листа. Однак MIME розширює підтримку ASCII‑символів у SMTP, дозволяючи надсилати та відображати листи з іншими кодуваннями, зображеннями та звуками. Загалом, всі поштові клієнти та сервери SMTP правильно обробляють повідомлення у форматі MIME.
Розуміння заголовків MIME
Заголовки MIME містять інформацію про протокол.
MIME-версія
Це вказує, що повідомлення має формат MIME. Воно виглядає так:
MIME-Version: 1.0
Content-Type
Це вказує тип вмісту повідомлення, представлений парою тип‑підтип, наприклад text/plain, text/html. Тип multipart може містити текст, HTML, вкладення, зображення, аудіо, відео тощо.
Content-Type: multipart
Кодування передачі вмісту
Вказує, чи використовується схема кодування бінарного в текстовий формат поверх кодування, зазначеного в content-type. Якщо так, зазначає яку саме. Ми можемо вказати тип кодування 7-bit, 8-bit або binary.
Закодоване слово
Заголовки SMTP‑повідомлень зазвичай використовують ASCII‑символи. Несимвольні ASCII символи повинні використовувати синтаксис MIME encoded word замість буквального рядка. Формат такий:
"=? charset ? encoding ? encoded text ?=".
Multipart-повідомлення
MIME multipart повідомлення містить межу (boundary) у заголовку content-type. Ця межа, яка не повинна зустрічатися в жодній з частин, розміщується між частинами, а також на початку і в кінці тіла повідомлення, як показано нижче:
MIME-версія: 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; це приклад того, як локальні фактори можуть впливати на вибір «найкращої» частини повідомлення, яку відображає застосунок.