MIME ist ein Standard für das Format von E-Mails. Er erweitert die Möglichkeiten der Datenübertragung.
MIME (Multipurpose Internet Mail Extensions) ist ein Standard, der 1991 von den Laboratorien Bell Communications vorgeschlagen wurde, um die begrenzten Möglichkeiten von E-Mails auszuweiten. Er macht es vor allem möglich, Dateien in E-Mails einzufügen (Bilder, Ton, Text usw.). Er wurde erstmals in den RFC 1341 und 1342 von Juni 1992 festgelegt.
MIME benutzt Header, um den Typ des Mailinhalts und die verwendete Codierung zu beschreiben.
MIME erweitert E-Mails um die folgenden Funktionalitäten :
Möglichkeit, mehrere Objekte (Anhänge) in eine Nachricht einzufügen;
unbegrenzte Länge der Nachricht;
Möglichkeit, andere Zeichensätze (Alphabete) als den ASCII-Code zu verwenden;
Verwendung von rich text (Formatierung der Nachrichten, Schriftarten, Farben usw.);
binäre Anhänge (ausführbare Dateien, Bilder, Audio- oder Videodateien usw.), die auch aus mehreren Teilen bestehen können;
MIME verwendet spezielle Header-Anweisungen, um das im Body verwendete Format zu beschreiben, damit der Mail-Client die Nachricht richtig interpretieren kann:
MIME-Version: Ziegt die Version des in der Nachricht verwendeten MIME Standards an (typischerweise Version 1.0).
Content-type: Beschreibt den Typ und Untertyp der Dateien. Er kann eine sogenannte Charset-Einstellung haben, die durch einen Strichpunkt getrennt ist und den verwendeten Zeichensatz angibt.
Content-transfer-encoding: Gibt an, welche Codierung im Body der Nachricht verwendet wird.
Content-ID: Ist eine einzigartige Kennung eines Teils der Nachricht.
Content-description: Enthält zusätzliche Informationen über den Inhalt der Nachricht.
Content-disposition: Gibt die Eigenschaften des Anhangs an, vor allem den Namen, welcher der Datei über das Attribut filename zugeteilt wird.
MIME-Typen, die im Header als Content-Type vorkommen, werden verwendet, um Dokumente im Anhang einer Mail zu beschreiben. Ein MIME-Typ ist folgendermaßen aufgebaut:
Content-type: erster_mime_typ/mime_unter_typ
Ein GIF-Bild hat dann zum Beispiel den folgenden MIME-Typ:
Content-type: image/gif
Die wichtigsten Datentypen, die manchmal auch "diskrete Datentypen" genannt werden, sind die folgenden.
text: lesbare Textdaten
text/rfc822 [RFC822], text/plain [RFC2646], text/html [RFC2854]
image: binäre Dateien, die digitale Bilder darstellen
image/jpeg, image/gif, image/png
audio: digitale Tondateien
audio/basic, audio/wav
video: Videodateien
video/mpeg
application: andere binäre Daten
application/octet-stream, application/pdf
MIME-Typen werden auch im Web verwendet zur Beschreibung von Dokumenten, die über das HTTP-Protokoll übertragen werden. Bei einer Übertragung zwischen einem Webserver und einem Internetbrowser sendet der Webserver zunächst den MIME-Typ der Datei, die an den Browser gesendet wird, damit dieser weiß, wie er die Datei anzeigen muss.
Um binäre Dateien zu übertragen, schlägt MIME fünf Codierungsformate vor, die im Header verwendet werden können und unter Transfer-encoding angezeigt werden:
7bit: Textformat auf 7 Bits codiert (für Nachrichten ohne Akzente)
8bit: Textformat auf 8 Bits
quoted-printable: Empfohlenes Format bei Nachrichten, die ein
Alphabet verwenden, das auf mehr als 7 Bits codiert ist (zum Beispiel mit Akzenten).
base64: Empfohlenes Format für den Versand von Binärdateien im Anhang.
binary: Binärformat (nicht empfohlen)
MIME ist sehr flexibel und kann auch mit fremden Codierungsformaten verwendet werden, zum Beispiel mit BinHex (geschütztes Format, das Apple gehört), uuencode und xxencode.
Die Benutzung der Kopfzeile Transfer-encoding bestimmt ein Verschlüsselungsformat für das Textfeld, löst aber nicht das Problem der Verschlüsselung der Kopfzeilen selbst (zum Beispiel bei der Betreffzeile).
Um Header in einem Alphabet mit mehr als 7 Bits codieren zu können und so zum Beispiel Akzente in der Betreffzeile zu erlauben, schlägt der MIME-Standard das folgende Format vor:
=?charset?codierung?ergebnis?
charset steht für den verwendeten Zeichensatz.
codierung gibt die gewünschte Codierung mit zwei möglichen Werten an.
Q steht für quoted-printable.
B steht für für base64.
ergebnis bezeichnet den nach der gewählten Methode codierten Text.
Es folgt ein Beispiel in Quoted-Printable-Codierung mit dem französischen Satz Comment ça marche? (zu Deutsch "Wie geht das?") als Betreff der Nachricht:
Subject: Comment =?ISO-8859-1?Q?=E7a_marche_=3F?=
Durch den MIME-Typ multipart ermöglicht der MIME-Standard das Erstellen zusammengesetzter Nachrichten. Das sind Nachrichten mit mehreren Anhängen, die auch verschachtelt sein können.
Zu diesem Zweck kann man mit MIME einen Trenner (boundary) festlegen. Das ist ein beliebiger String, der als Attribut von Content-type im Header festgelegt wird:
Content-type: multipart/mixed;
boundary="------------020005090303070203010601"
Jeder Trenner grenzt einen Inhalt ab, der mit den Headern Content-type und Content-encoding beginnt. Es ist sehr wichtig, dass der Wert dieses Trenners nicht im Inhalt der Nachricht vorkommt.
Es gibt mehrere Arten von Boundaries:
multipart/mixed definiert eine Folge mehrerer Elemente.
multipart/alternative definiert verschiedene Alternativen für dieselbe Nachricht, zum Beispiel eine Nachricht im Text- und HTML-Format. Ist der E-Mail-Client imstande, die formatierte Nachricht anzuzeigen und entsprechend konfiguriert, zeigt er die HTML-Version an. Andernfalls wird die Textversion angezeigt.
multipart/parallel ist für Daten, die zeitgleich dargestellt werden (zum Beispiel Ton und Bild).
multipart/signed definiert eine digitale Signatur für die Daten der Nachricht.
multipart/related definiert untereinander verbundene Informationen.
Die MIME-Typen werden von der Orgagnisation IANA (Internet Assigned Numbers Authority) standardisiert. Dies ist eine nicht vollständige Liste der geläufigsten MIME-Typen:
MIME-Typ | Dateityp | Zugehöriger Anhang |
---|---|---|
application/atom+xml | Dateien im Format ATOM | atom |
application/iges | CAS-Dateien | iges |
application/javascript | Javascript-Dateien | js |
application/dxf | AutoCAD-Dateien | dxf |
application/mp4 | MPEG4-Dateien | mp4 |
application/iges | CAO-IGES-Austauschformat | igs, iges |
application/octet-stream | Nicht interpretierte binäre Dateien | bin |
application/msword | Dateien im Format Microsoft Word | doc |
application/pdf | Adobe-Acrobat-Dateien | |
application/postscript | PostScript-Dateien | ai, eps, ps |
application/rtf | Rich-Text-Format | rtf |
application/sgml | SGML-Dateien | sgml |
application/vnd.ms-excel | Tabellendateien im Format Microsoft Excel | xls |
application/vnd.ms-powerpoint | Vortragsfolien-Dateien im Format Microsoft Powerpoint | ppt |
application/xml | XML-Dateien | xml |
application/x-tar | komprimierte TAR-Dateien | tar |
application/zip | komprimierte ZIP-Dateien | man |
audio/basic | einfache Audiodateien | au, snd |
audio/mpeg | MPEG-Audio-Dateien | mpg, mp3 |
audio/mp4 | MPEG-4-Audio-Dateien | mp4 |
audio/x-aiff | AIFF-Audio-Dateien | aif, aiff, aifc |
audio/x-wav | WAVE-Audio-Dateien | wav |
image/gif | GIF-Bilder | man |
image/jpeg | JPEG-Bilder | jpg, jpeg, jpe |
image/png | PNG-Bilder | png |
image/tiff | TIFF-Bilder | tiff, tif |
image/x-portable-bitmap | Bitmap-PBM-Dateien | pbm |
image/x-portable-graymap | Graymap-PBM-Dateien | pgm |
image/x-portable-pixmap | Pixmap-PBM-Dateien | ppm |
multipart/x-zip | ZIP-Archivdateien | zip |
multipart/x-gzip | GNU-ZIP-Archivdateien | gz, gzip |
text/css | Stylesheet | css |
text/csv | Textdateien mit Komma-Trennung | csv |
text/html | HTML-Dateien | htm, html |
text/plain | Textdateien ohne Formatierung | txt, g, h, c, cc, hh, m, f90 |
text/richtext | Rich-Text-Dateien | rtx |
text/rtf | Textdateien im Rich-Text-Format | rtf |
text/tab-separated-value | durch Tabulator getrennte Textdateien | tsv |
text/xml | XML-Dateien | xml |
video/h264 | H.264-Videos | h264 |
video/dv | Videos im Format DV | dv |
video/mpeg | MPEG-Videos | mpeg, mpg, mpe |
video/quicktime | QuickTime-Videos | qt, mov |
video/msvideo | Microsoft-Windows-Videos | avi |
Foto: © Anita Ponne - Shutterstock.com