Eine MIME-Nachricht setzt sich aus Daten und
Metadaten zusammen. MIME-Metadaten bestehen aus Headern, die der HTTP-Darstellung entsprechen, und
MIME-Begrenzern.
MIME-Header
Jeder Header ist ein durch ein Doppelpunkt getrenntes Name/Wert-Paar in einer
eigenen Zeile. Die ASCII-Zeichenfolge <CR><LF> beendet diese
Zeile. Eine Folge aus mehreren Headern, ein so genannter Headerblock, wird durch eine
Leerzeile beendet: <CR><LF><CR><LF>. Alle Header, die
dieser HTTP-Darstellung entsprechen, können in einem MIME-Dokument enthalten sein.
Einige
gebräuchliche MIME-Header werden unter Standardfelder des MIME-Headers beschrieben.
Content-Type
Der einzige Header, der vorhanden sein muss, ist der Header
Content-Type (Inhaltstyp). Dieser Header gibt den Typ der in der Nachricht
enthaltenen Daten an. Wenn der Content-Type-Wert mit "multipart" beginnt, handelt es sich um
eine mehrteilige MIME-Nachricht. Bei mehrteiligen Nachrichten muss der Header 'Content-Type' auch
ein Begrenzungsattribut (boundary) enthalten, das den Text festlegt, der als Begrenzer für die
Nachrichtenteile verwendet wird. Jeder MIME-Teil verfügt über ein eigenes Content-Type-Feld, das
den Typ der im jeweiligen Teil enthaltenen Daten angibt. Dies kann wiederum den Wert 'multipart'
enthalten, d. h., mehrteilige Nachrichten können verschachtelt werden. MIME-Teile mit allen anderen
Content-Type-Werten werden wie BLOB-Daten behandelt.
Wenn ein MIME-Dokument über HTTP
gesendet wird, steht der Header 'Content-Type' im HTTP-Headerblock statt im Hauptteil der
MIME-Nachricht. Aus diesem Grund verwaltet der Broker den Wert des Headers 'Content-Type' als die
Eigenschaft 'ContentType' im Ordner
Properties (Eigenschaften) der logischen
Baumstruktur. Dadurch kann der MIME-Parser den Content-Type-Wert für ein MIME-Dokument, das über
HTTP empfangen wird, abrufen. Falls Sie eine neue MIME-Baumstruktur erstellen oder den
Content-Type-Wert ändern müssen, legen Sie den Content-Type-Wert über die Eigenschaft 'ContentType'
in der MIME-Domäne fest. Wenn Sie den Content-Type-Wert direkt in der MIME-Baumstruktur oder der
HTTP-Baumstruktur festlegen, wird der Wert möglicherweise ignoriert oder inkonsistent verwendet.
Der folgende ESQL-Code ist ein Beispiel für das Festlegen der Eigenschaft 'ContentType' des
Brokers:
SET OutputRoot.Properties.ContentType = 'text/plain';
Parsing
Die MIME-Domäne erzwingt nicht die vollständige
MIME-Spezifikation. Deshalb können Sie mit Nachrichten arbeiten, die in anderen Anwendungen
möglicherweise unzulässig sind. Beispielsweise besteht der MIME-Parser nicht darauf, dass ein
MIME-Version-Header vorhanden ist.
Der MIME-Parser erwartet, dass folgende
Vorgaben erfüllt werden:
Sonderfälle vom mehrteiligen MIME-Nachrichten
Der MIME-Parser ist in
erster Linie zur Nutzung mit mehrteiligen MIME-Nachrichten gedacht.
Der Parser kann aber auch für
einige Sonderfälle eingesetzt werden:
- Mehrteilige MIME-Nachrichten, die aus nur einem Teil bestehen. In der logischen Baumstruktur
für den MIME-Teil werden der Inhaltstyp (Content-Type) und sonstige Informationen wie üblich
gespeichert, das Datenelement (Data) für den Anhang ist jedoch leer.
- Einteilige MIME-Nachrichten. Für einteilige MIME-Nachrichten enthält die logische Baumstruktur
kein untergeordnetes Teilelement (Parts). Das letzte untergeordnete Element der MIME-Struktur ist
das Datenelement (Data).
Dieses Element ist das übergeordnete Element des BLOB, das die
Nachrichtendaten enthält.
- MIME-Teile ohne Inhalt.
Sichere MIME-Nachrichten (S/MIME)
S/MIME ist ein Standard zum Senden sicherer E-Mail-Nachrichten. Eine S/MIME-Nachricht besitzt einen übergeordneten Content-Type
multipart/signed mit den Parametern protocol und
micalg, die den Algorithmus zum Verschlüsseln der Nachricht festlegen. Ein
oder mehrere MIME-Teile können codierten Inhalt enthalten. Diese Teile haben Content-Type-Werte wie
application/pkcs7-signature und den Content-Transfer-Encoding-Wert
base64. Die MIME-Domäne versucht nicht, die Nachricht zu interpretieren oder zu
prüfen, ob die Nachricht signiert ist.