Multipurpose Internet Mail Extensions

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

MIME, plným názvem Multipurpose Internet Mail Extensions („víceúčelová rozšíření internetové pošty“), je internetový standard, který umožňuje přenášet texty v různých kódováních, binární data a vícedílné zprávy (např. opatřené elektronickým podpisem) kanály původně navrženými pouze pro přenos textových zpráv v kódování ASCII. Standard vyvinutý pro elektronickou poštu používají i další aplikační protokoly (např. HTTP). Standard MIME je definován šesti dokumenty: RFC 2045, RFC 2046, RFC 2047, RFC 4288, RFC 4289 a RFC 2049.

Charakteristika[editovat | editovat zdroj]

Původní standard elektronické pošty byl navržen pro přenos anglického textu, a dovoloval zprávy pouze v kódování ASCII. Proto nebylo dlouho možné používat v elektronické poště znaky s diakritikou ani posílat zprávy s přílohami. Částečným řešením bylo například použití uuencodingu nebo jiných metod, avšak citelně scházela celosvětová standardizace.

MIME rozšiřuje formát e-mailu o tyto možnosti:

  • podpora textu psaného ve znakových sadách jiných než US-ASCII
  • podpora příloh (obrázky, zvuky, filmy, programy a podobně)
  • vícedílné zprávy
  • informace v hlavičce v jiné znakové sadě než ASCII

Základní formát e-mailu je definován v RFC 2822. Tento standard specifikuje formátování hlaviček, těla e-mailu a pravidla pro běžně používané hlavičky jako „Komu:“, „Předmět:“, „Od:“ a „Datum:“. MIME definuje sadu hlaviček pro specifikaci doplňkových atributů zprávy obsahující "content-type" a definuje sadu "transfer-encoding", která může být použita pro reprezentaci 8bitových binárních dat pomocí textu v 7bitovém kódování ASCII.

MIME hlavička[editovat | editovat zdroj]

MIME-Version[editovat | editovat zdroj]

Přítomnost této hlavičky značí, že je zpráva formátována MIME. Typická hodnota je „1.0“:

MIME-Version: 1.0

Content-Type[editovat | editovat zdroj]

Tato hlavička označuje typ internetového média (text, audio, video,…) v těle zprávy. Skládá se z typu a podtypu a popřípadě doplňkové informace uvedené za středníkem (parametr). Informuje příjemce o obsahu zprávy.

Typ - definuje o jaký typ souboru se jedná (text, obrázek, video, zvuk,…)

Podtyp - definuje formát souboru

Doplňkové informace - např. parametr udávající hodnotu

Content-Type: image/jpeg; parametr1=hodnota;

Content-Transfer-Encoding[editovat | editovat zdroj]

Definuje omezenou sadu metod pro reprezentaci dat v takovém formátu, který vyhovuje možnostem přenosového kanálu:

7bit - textové soubory obsahující pouze krátké řádky v kódování ASCII lze přenášet i sedmibitovými kanály „tak jak jsou“ s uvedením tohoto přenosového kódování

8bit - textové soubory s krátkými řádky v jiném kódování než ASCII lze přenášet osmibitovými kanály s uvedením tohoto přenosového kódování

binary - přenosové kódování pro přenos libovolných dat (dlouhé řádky, možnost ne-ASCII znaků) kanály, které to umožňují

quoted-printable - určené pro přenos textových souborů, které obsahují i nevelký podíl ne-ASCII znaků a mohou obsahovat dlouhé řádky, sedmibitovými kanály; není příliš efektivní (každý ne-ASCII znak je zakódován 3 znaky)

base64 - určené pro přenos libovolných dat sedmibitovými kanály; kóduje libovolná data pomocí ASCII textu; reprezentuje 3 oktety dat pomocí 4 ASCII znaků

Příklad kombinace hlaviček pro přenos českého textu v kódování ISO-8859-2 (mělo by se raději používat UTF-8) sedmibitovým kanálem:

Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable

Content-ID[editovat | editovat zdroj]

Označuje identifikátor v hlavičce pro jednoznačnou identifikaci zprávy. Slouží k vytvoření odkazu z jedné zprávy na druhou.

message/external-body

Content-Description[editovat | editovat zdroj]

Obsahuje popis informace o přenášené zprávě, např. název obrázku, který je ke zprávě přiložen. Popisuje se v us-ASCII.

Content-Description: "popis obrazku"

Syntaxe Encoded-word[editovat | editovat zdroj]

Počínaje RFC 2822 jsou hlavičky a jejich hodnoty v ASCII znacích, pokud chceme použít jinou znakovou sadu, musíme použít "Encoded-word" syntaxi. V syntaxi je zahrnut jak originální text v ASCII, tak požadovaná cílová znaková sada a dekódovací metoda(„content-transfer-encoding“), pomocí těchto parametrů se pak text zobrazí ve správné znakové sadě.

Forma zápisu:  "=?charset?encoding?encoded text?="

Vícedílné zprávy[editovat | editovat zdroj]

Vícedílné zprávy (MIME multipart) v hlavičce Content-Type definují oddělovač (boundary). Oddělovač je umístěn mezi částmi zprávy a na začátku a konci těla zprávy, zde je příklad:

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

--frontier

Content-type: text/plain

--frontier

Content-type: application/octet-stream
Content-transfer-encoding: base64

PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
--frontier--

Každá část se skládá ze své vlastní hlavičky a těla. Multipart bloky jako celek nemají znakovou sadu, je zde třeba použít syntaxi "encoded-word", pokud nepracujeme s ASCII, těla jednotlivých částí zprávy mohou použít znakovou sadu náležící do jejich "content-typu".

Podtypy vícedílných zpráv[editovat | editovat zdroj]

MIME standard definuje různé podtypy vícedílných zpráv (multipart), které specifikují druh jednotlivých částí zpráv. Podtyp je definován v „content-type“ hlavičce celé zprávy. Například multipart zpráva používající podtyp „digest“ by byla v hlavičce zapsána jako „multipart/digest“.

Standardně používané jsou podtypy mixed a digest, ostatní jsou volitelné.

Seznam nejvíce používaných subtypů:

Mixed[editovat | editovat zdroj]

„Multipart/mixed“ slouží pro přenos souborů s různými hlavičkami. Používá se pokud jsou jednotlivé části těla zprávy odlišné a je třeba je uspořádat. Pokud se odesílají např. obrázky, většina e-mailových klientů zobrazí tyto hlavičky jako vkládané (inline).

Message[editovat | editovat zdroj]

Část typu Message/rfc822 obsahuje kompletní e-mail včetně hlaviček.

Alternative[editovat | editovat zdroj]

Podtyp „multipart/alternative“ znamená, že každá část je alternativní verze stejného (nebo podobného) obsahu, každá v jiném formátu označená svou hlavičkou. Systém si může ze všech reprezentací vybrat jednu, která je nejvhodnější pro zobrazení zprávy. Běžně je „multipart/alternative“ užíván pro e-mail složený ze dvou částí, jedna je prostý text (text/plain) a druhá HTML (text/html). Část s prostým textem zajišťuje zpětnou kompatibilitu, zatímco HTML část formátování a vytvoření odkazů. Většina e-mailových klientů nabízí volbu, zda prostý text preferovat před HTML, toto je příklad toho jak lokální faktory mohou ovlivnit „počínání“ aplikace, která část zprávy je „nejlepší“ pro zobrazení. Zde je pro ilustraci příklad:

  From: Jan Novák <jan.novak@seznam.cz>
  To: Alois Starý <a.stary@ibm.com>
  Subject: Formatted text mail
  MIME-Version: 1.0
  Content-Type: multipart/alternative; boundary=boundary42
  
  --boundary42
  
  Content-Type: text/plain; charset=us-ascii
  
  --boundary42
  
  Content-Type: text/x-whatever
  
  --boundary42
   
  Content-Type: text/richtext
  
  --boundary42--

Systém uživatele si v tomto příkladu nejvíce "rozumí" s formátem text/richtext, který je první v pořadí relevantnosti (poslední vypisovaný formát je nejlepší) a proto jej využije, jiný systém si však může vybrat i z nabídky druhých dvou formátů.

Signed[editovat | editovat zdroj]

„multipart/signed“ je využíván k přiložení digitálního podpisu do zprávy, která má dvě části. V první je tělo zprávy opatřené digitálním podpisem, druhá část obsahuje kontrolu digitálního podpisu.

Encrypted[editovat | editovat zdroj]

„multipart/encrypted“ slouží k šifrování zprávy a má dvě části. První obsahuje informace potřebné k dekódování, druhá část jsou vlastní zakódované informace. Nejběžnějšími typy jsou „application/pgp-encrypted“ a „application/pkcd7-mime“.

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]