# Multipurpose Internet Mail Extensions

De Multipurpose Internet Mail Extensions (meestal afgekort tot MIME) vormen een internetstandaard voor e-mail. MIME legt de structuur en codering van e-mailberichten vast. Het wordt ook gebruikt voor enkele andere manieren van communicatie over internet.

## Gebruik van MIME

Het internetprotocol voor e-mail, SMTP voorziet alleen in transport van 7 bits-gegevens in de vorm van ASCII. In ASCII zijn alleen de "normale" lettertekens gedefinieerd, dus zonder accenten. Binaire bestanden bestaan uit 8 bits-tekens, en kunnen dus ook niet zonder meer via SMTP worden verzonden. MIME voorziet in het coderen van niet-ASCII-tekens naar ASCII vóór het verzenden van e-mailberichten, en het decoderen hiervan nadat het bericht is aangekomen. Zowel het coderen als het decoderen wordt meestal automatisch gedaan door een e-mailprogramma. MIME wordt ook gebruikt in het HTTP-protocol (gebruikt voor het World Wide Web) om op dezelfde wijze hetzelfde probleem op te lossen.

## Geschiedenis

De eerste versie van MIME werd gedefinieerd in RFC 822 (gepubliceerd in 1982), en in stappen uitgebreid tot de huidige standaard: RFC 2822 (gepubliceerd in 2001). Een belangrijk uitgangspunt van MIME is dat de bestaande mailservers niet hoeven te worden aangepast. De specificatie is daarom zeer flexibel, de meeste dingen zijn optioneel. Bovendien beschrijft de specificatie methoden om nieuwe content-types en andere zaken te registreren.

## Structuur van e-mailberichten

Volgens MIME bestaan e-mailberichten uit een aantal headers, waarin bijvoorbeeld informatie staat over welke mailservers het bericht onderweg is gepasseerd, een ID van het bericht etc. De belangrijkste headers bevatten informatie over de afzender, de geadresseerde, het onderwerp en de datum wanneer het bericht is verstuurd. Daarnaast bevatten de headers specificaties over het bericht zelf: het content-type en de MIME-versie. De MIME-versie is eigenlijk altijd 1.0, wat alleen aangeeft dat het bericht volgens de MIME-specificaties is samengesteld.

## Content-types en codering

Het content-type geeft aan op welke manier de inhoud van het bericht geïnterpreteerd moet worden. Het simpelste is text/plain, wat aangeeft dat het over platte tekst gaat. Andere veelgebruikte content-types zijn onder andere text/html voor HTML-berichten en multipart/mixed, en multipart/alternative.
Het multipart content-type geeft aan dat het bericht uit meerdere onderdelen bestaat met elk een eigen content-type en eventueel een eigen codering, bijvoorbeeld text/plain voor de plattetekst-versie van de tekst, text/html voor de HTML-versie van de tekst en bijvoorbeeld application/octet-stream of image/gif voor een bijlage. Als zowel een "platte tekst" als een HTML-versie van het bericht zijn verstuurd, kiest het e-mailprogramma welke van de twee wordt getoond. Sommige e-mailprogramma's ondersteunen geen HTML, of zijn door de gebruiker zo ingesteld dat ze de "platte tekst"-versie van het bericht tonen.
Bij elk onderdeel van een multipart-bericht staat ook de "Content-Transfer-Encoding" vermeld. Dit geeft aan op welke manier het gecodeerd is naar 7 bits. Veelgebruikte coderingen zijn base64 voor binaire bestanden en quoted-printable voor tekst.
De verschillende onderdelen van een multipart-bericht zijn gescheiden door een boundary. De boundary geeft alleen aan wanneer het volgende onderdeel begint en heeft een variabele waarde, maar begint vaak met "‑‑‑‑" of "====" (zonder de aanhalingstekens) gevolgd door een meestal willekeurig gegenereerd aantal lettertekens, bijvoorbeeld "‑‑‑‑_=_NextPart_001_01C49FCB.50AC2DA8". De waarde van de boundary wordt ook in een header in het bericht aangegeven. Een e-mailprogramma kan op die manier onderscheid maken tussen de verschillende onderdelen van een multipart bericht.

## Voorbeeld

Hieronder staat een voorbeeld van hoe een e-mailbericht eruitziet dat de afbeelding Afbeelding:Portal.gif opstuurt met het onderwerp "een afbeelding" (zie de header genaamd Subject) en met de tekst "dit is het portaallogo". Zie ook hoe de boundary vier keer wordt genoemd: de eerste keer in de header genaamd Content-type, daarna voor het begin van het eerste deel van het bericht (de tekst), dan tussen het eerste en het tweede deel van het bericht (het plaatje) en ten slotte aan het eind van het bericht.

## Externe link

* (en) Lijst van MIME Media Types geregistreerd bij IANA