Multipurpose Internet Mail Extensions Protocol
Multipurpose Internet Mail Extensions (MIME) is een internetstandaard die het e-mailformaat uitbreidt om te ondersteunen:
- tekst in tekensets anders dan US-ASCII;
- niet-tekstbijlagen;
- multipart-berichtlichamen; en
- headerinformatie in niet-ASCII-tekensets.
SMTP ondersteunt alleen 7-bit ASCII-tekens, wat in feite betekent dat het slechts een klein aantal talen ondersteunt. Talen die gebaseerd zijn op het Latijnse alfabet werken prima in SMTP; andere talen worden niet correct weergegeven wanneer de e-mail wordt afgeleverd. MIME daarentegen breidt de ASCII-tekensondersteuning van SMTP uit zodat e-mails met andere tekensets, afbeeldingen en geluiden kunnen worden verzonden en weergegeven. Over het algemeen mappen alle e-mailclients en SMTP-servers berichten in MIME-indeling correct.
Begrijpen van MIME-headers
MIME-headers bevatten informatie over het protocol.
MIME-versie
Dit geeft aan dat het bericht in MIME-formaat is. Het verschijnt als:
MIME-Version: 1.0
Content-Type
Dit geeft het contenttype van het bericht aan, gegeven als een type- en subtypepaar: bijvoorbeeld text/plain, text/html. Het multipart-contenttype kan tekst, HTML, bijlagen, afbeeldingen, audio, video enzovoort bevatten.
Content-Type: multipart
Content-Transfer-Encoding
Geeft aan of een binary-to-text coderingsschema wordt gebruikt bovenop de codering gespecificeerd door content-type. Indien aanwezig, wordt aangegeven welke. We kunnen hier 7-bit, 8-bit en binary coderingssoorten specificeren.
Encoded-Word
SMTP-berichtheaders gebruiken normaal gesproken ASCII-tekens. Niet-ASCII-tekens moeten de MIME-gecodeerde woorden-syntaxis gebruiken in plaats van een letterlijke tekenreeks. Het formaat is:
"=? charset ? encoding ? encoded text ?=".
Multipart-berichten
Een MIME multipart-bericht bevat een grens (boundary) in de content-type header. Deze grens, die niet mag voorkomen in een van de delen, wordt geplaatst tussen de delen, en aan het begin en einde van de body van het bericht, als volgt:
MIME-versie: 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--
Elk deel bestaat uit een eigen content-header en een body.
Multipart-subtypes
De MIME-standaard definieert verschillende multipart-berichtsubtypes. Het subtype wordt gespecificeerd in de "Content-Type" header van het gehele bericht.
Hieronder staat een lijst van de meest gebruikte subtypes.
- Mixed: Multipart/mixed wordt gebruikt voor het versturen van bestanden met verschillende "Content-Type" headers inline. Bij het versturen van afbeeldingen of andere gemakkelijk leesbare bestanden tonen de meeste e-mailclients deze inline.
- Message: Een berichtdeel bevat een e-mailbericht.
- Digest: digest is een eenvoudige manier om meerdere tekstberichten te versturen. Het standaard content-type voor elk deel is "message/rfc822".
- Alternative: De alternative subtype geeft aan dat elk deel een "alternatieve" versie is van dezelfde (of vergelijkbare) inhoud, elk in een ander formaat aangeduid door de "Content-Type" header.
Meestal wordt multipart/alternative gebruikt voor e-mail met twee delen, één platte tekst (text/plain) en één HTML (text/html). Het platte-tekstdeel biedt achterwaartse compatibiliteit terwijl het HTML-deel opmaak en hyperlinks mogelijk maakt. De meeste e-mailclients bieden een gebruikersoptie om platte tekst boven HTML te verkiezen; dit is een voorbeeld van hoe lokale factoren de keuze van een applicatie kunnen beïnvloeden welke "best" deel van het bericht wordt weergegeven.