MIME-Nachrichten

MIME-Header

Eine MIME-Nachricht setzt sich aus Daten und Metadaten zusammen. MIME-Metadaten bestehen aus Headern, die der HTTP-Darstellung entsprechen, und MIME-Begrenzern. 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. Unter Standardfelder des MIME-Headers werden mehrere MIME-Standardheader beschrieben.

Content-Type

Der einzige Header, den der MIME-Parser immer vorfinden 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 'Content-Type' auch ein Begrenzungsattribut enthalten, das den Text festlegt, der als Begrenzer für die Nachrichtenteile verwendet wird. Jeder separate MIME-Teil verfügt über ein eigenes Content-Type-Feld, das den Typ der in diesem 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 Wert von 'Content-Type' 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, richten Sie den Content-Type-Wert mit Hilfe der Eigenschaft 'ContentType' in der MIME-Domäne ein. Wenn Sie den Content-Type-Wert direkt in der MIME-Baumstruktur oder in HTTP-Baumstrukturen einrichten, wird er unter Umständen 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 ungültig 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:
  • Die MIME-Header müssen richtig formatiert sein. Dies bedeutet:
    • Jeder Header ist ein durch einen Doppelpunkt getrenntes Name/Wert-Paar in einer eigenen Zeile, die durch die ASCII-Zeichenfolge <CR><LF> beendet wird.
    • Die Headerzeile muss das Format 7-Bit ASCII haben.
    • Verwenden Sie Semikolons zum Trennen von Parametern:
      Content-Type: Multipart/Related; boundary=MIME_Begrenzer; type=text/xml
    • Ein Header kann mit einem Kommentar in runden Klammern versehen sein. Beispiel:
      MIME-Version: 1.0 (Generiert von XYZ)
  • Eine Zeile, die mit einem Leerzeichen beginnt, wird als Fortsetzung der vorherigen Zeile behandelt. Dadurch kann ein langer Header auf mehrere Zeilen aufgeteilt werden.
  • Wenn zwei oder mehrere Header in einem Headerblock denselben Namen haben, werden ihre Werte in einer durch Kommas getrennten Liste verkettet.
  • Es muss ein MIME-Header 'Content-Type' auf der höchsten Ebene verfügbar sein. Bei dem Header muss die Groß-/Kleinschreibung nicht beachtet werden. Beim Transport über HTTP wird jeder Content-Type-Wert im HTTP-Header als Content-Type der höchsten Ebene verwendet. Erfolgt der Transport nicht über HTTP, muss Content-Type im ersten Headerblock der MIME-Nachricht stehen.
  • Der Content-Type-Wert besteht aus einem Medientyp gefolgt von dem Zeichen / und einem Subtyp. Beispiele hierfür sind text/xml und multipart/related. Subtypen werden vom Parser nicht ausgewertet. Auf diesen Wert können ein oder mehrere Parameter folgen, die durch Semikolons getrennt werden.
  • Wenn eine Nachricht den Medientyp 'multipart' hat, muss in einem Begrenzerattribut der Text angegeben sein, der als Begrenzer zwischen den einzelnen MIME-Teilen verwendet wird.
  • Jeder einzelne MIME-Teil kann einen eigenen Content-Type-Header enthalten. Der Header 'Part' kann den Medientyp 'multipart' haben, d. h., mehrteilige Nachrichten können verschachtelt werden. In diesem Fall muss ein gültiges Begrenzerattribut angegeben werden, dessen Wert sich von jedem zuvor in der Nachricht definierten Wert unterscheiden muss. MIME-Teile mit allen anderen Content-Type-Werten werden wie BLOB-Daten behandelt.
  • Begrenzer für mehrteilige MIME-Nachrichten werden im Format 7-Bit ASCII dargestellt. Der Begrenzer besteht aus einer Zeile, die mit zwei Silbentrennungsstrichen beginnt, denen sich eine Begrenzerzeichenfolge anschließt. Diese Folge darf innerhalb der MIME-Nachricht ausschließlich als Begrenzer vorkommen. Ein MIME-Endbegrenzer besteht aus zwei Silbentrennungsstrichen, denen sich die MIME-Begrenzerzeichenfolge, gefolgt von zwei weiteren Silbentrennungsstrichen, anschließt. Alle Begrenzerzeilen müssen mit der ASCII-Folge <CR><LF> enden. Es folgt ein Beispiel für eine Nachricht mit Begrenzern:
    --MIME_Begrenzer
    Nachrichtendaten
    --MIME_Begrenzer
    Nachrichtendaten
    --MIME_Begrenzer--
    Dabei steht MIME_Begrenzer für die Begrenzerzeichenfolge und Nachrichtendaten für die Nachrichtendaten.
  • Der MIME-Medientyp "Nachricht" wird nicht unterstützt und führt während der Ausführung zu einem Fehler.
  • Alle Präambeldaten (Text zwischen dem ersten MIME-Headerblock und dem ersten Begrenzer) oder Epilogdaten (Text nach dem letzten Begrenzer) werden in der logischen Baumstruktur als ein Element, das nur aus einem Wert bestehen kann, gespeichert. Präambeldaten und Epilogdaten können nur als das erste bzw. letzte untergeordnete Element eines Teileknotens (Parts) vorkommen.
  • Der MIME-Parser unterstützt kein Parsing auf Anforderung und ignoriert die Eigenschaft 'Zeitpunkt der Syntaxanalyse'. Der Parser prüft MIME-Nachrichten nicht gegen ein Nachrichtenmodell und ignoriert die Prüfeigenschaft von Message Brokers Toolkit.

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 (Parts) ohne Inhalt.

Sichere MIME-Nachrichten (S/MIME)

S/MIME ist ein Standard zum Senden sicherer E-Mails. 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 tatsächlich signiert ist.

Zugehörige Konzepte
Details der MIME-Baumstruktur
Logische Baumstruktur
Begriffe der Nachrichtenmodellierung
Zugehörige Tasks
Inhalt des Hauptteils einer Nachricht bearbeiten
Zugehörige Verweise
Standardfelder des MIME-Headers
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ac30080_