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
[bewerken | brontekst bewerken]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
[bewerken | brontekst bewerken]De eerste versie van MIME werd gedefinieerd in RFC 822 (gepubliceerd in 1982),[1] en in stappen uitgebreid tot de huidige standaard: RFC 2822 (gepubliceerd in 2001).[2] 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
[bewerken | brontekst bewerken]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
[bewerken | brontekst bewerken]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
[bewerken | brontekst bewerken]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.
Return-path: <verzender@foo.com> Received: from smtp05.senderisp.nl (unverified [123.456.25.105]) by MAIL9.nshosts.com (Vircom SMTPRS 5.3232) with ESMTP id <B0087803613@MAIL9.nshosts.com> for <ontvanger@foo.com>; Sat, 28 May 2005 16:25:00 -0600 Received: from PC1.mailserver1.com (c519dbcca.cable.senderisp.nl [89.147.103.232]) by smtp5.senderisp.nl (Postfix) with ESMTP id D248025438 for <ontvanger@foo.com>; Sun, 29 May 2005 00:25:00 +0200 (CEST) Message-Id: <5.0.2.1.1.20050524102835.01df3241@pop.mailserver1.com> X-Sender: test@pop.mailserver1.com X-Mailer: QUALCOMM Windows Eudora Version 5.0.2 Date: Sun, 29 May 2005 00:25:07 +0200 To: ontvanger@foo.com From: Verzender Naam <verzender@foo.com> Subject: een afbeelding Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=====================_60270782==_" --=====================_60270782==_ Content-Type: text/plain; charset="us-ascii"; format=flowed dit is het portaallogo --=====================_60270782==_ Content-Type: image/gif; name="Portal.gif"; x-mac-type="47494666"; x-mac-creator="4A565752" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Portal.gif" R0lGODlhIgAgAMQfANnl2cjZx6OxornEuOPs45iml4mYifP28+nx6UtVS9fd12t3a3yJfLjQuKvF qsXNxMHWwVVgVb7TvSkvKczfyzlAOd3p3s/izdDYz2BtYMvdzNHg0bPMskFKQbK7sv///yH5BAEA AB8ALAAAAAAiACAAAAX/4CeOZGmeaKqu6SEIXiwMB/l4AGsWiqX8ioGh9nlgFC+i7jM8OJ0Ihudz MCCuQoFlySBcv4PIFIkgmAmPQkGZMlgOX8Ig8/ggCmWL3gKQsgoPcQQABgJBDwR8AAAaBQl1KzFX ZxYEMRhmAIoQDAkELAp4Z6N5ihsbAwsJKpAfDHkAAQMeAxiLAKcbFx4RDCgHgAYYaWUAA50VCQYe Abm6HsonwFAegQgWqRPKnQsDGhcYGhQC0Sa0X3EbBhULIwcLDBAUFAEa5FMm7wIFzHoADws6sCHA gIKGAAgdZBjwK0KHDgweLJrjqwSDeggDSHDAQM2aEsAKMGiwiFNFEgY0/2iAwBJCAJeyTpaIYeHU HDYWBMRi2aCnBJYKW41Q4MFUAAYnPRh4sEHjRgMMDBQwkKEDBhMCMPCZNy4DPkBNJYgV4LBDgg4T IuQzQOAUhQsSDCTI8eGFxp4NClTAkaFCBjYiHjyoeeHgsQQIRHgoAAFv3g74FEhzg4teAAeqiFgw 0LgnhwKQVQwYfDAjWbUiDsTz/DkBPhTVmiKEIEFA6BEjG3DYLSCDgRQIdDZlKRb0ayYOdDtYzgD1 CQMI1QhwsNvAbRGFOCxfbiDClhMLIkwYnyAD0r7H92nf3l2ytBiLq1YYX8G9YqkGpAroLlTFAQwx 2CeCBX1NkEwGVRWwxBIKFsTQCVoT/LbgEth4ANgHIQAAOw== --=====================_60270782==_--