Bedeutet das Vorhandensein eines Content-ID-Headers in einem E-Mail-MIME, dass der Anhang eingebettet sein muss?


11

Zwei verschiedene E-Mail-Produkte von Drittanbietern reagieren unterschiedlich auf das Vorhandensein eines Inhalts-ID- Headers in der MIME-Quelle einer E-Mail. Dies führt zu einer inkonsistenten Benutzererfahrung, die wir beheben möchten.

Hier ist ein Beispiel:

--boundary-example
Content-Location: CID:somethingatelse 
Content-ID: <foo4atfoo1atbar.net>
Content-Type: IMAGE/GIF
Content-Transfer-Encoding: BASE64

R0lGODlhGAGgAPEAAP/////ZRaCgoAAAACH+PUNv
cHlyaWdodCAoQykgMTk5LiBVbmF1dGhvcml6ZWQgZHV
wbGljYXRpb24gcHJvaGliaXRlZC4A etc..

Ein E-Mail-Produkt interpretiert dies als eingebettetes Bild. Der andere interpretiert dies als gewöhnlichen Anhang (nicht eingebettet). Wenn wir die Content-ID- Zeile vollständig entfernen , denken beide Produkte, dass der Anhang nicht eingebettet ist.

Gibt es einen bestimmten RFC, der definitiv zu dem Schluss kommt, welches Verhalten korrekt ist? Ein Kollege und ich haben RFC2392 überprüft, in der Eröffnungszusammenfassung steht:

Die Verwendung von [MIME] in E-Mails zur Übermittlung von Webseiten und den
zugehörigen Bildern erfordert ein URL-Schema, damit der HTML-Code
auf die in der Nachricht enthaltenen Bilder oder anderen Daten verweisen kann . Der Content-ID
Uniform Resource Locator "cid:" dient diesem Zweck. […] Das "cid" -Schema bezieht sich auf einen bestimmten Körperteil einer Nachricht. Seine Verwendung ist im Allgemeinen auf Verweise auf andere Körperteile in derselben Nachricht wie das verweisende Körperteil beschränkt. Das "mittlere" Schema kann sich auch auf einen bestimmten Körperteil innerhalb einer bestimmten Nachricht beziehen, indem die Adresse der Inhalts-ID eingeschlossen wird.

Obwohl dies nicht absolut ist, neigen wir dazu zu glauben, dass alle eingebetteten Elemente eine CID benötigen, um auf sie zu verweisen, und dass sie „im Allgemeinen auf andere Körperteile in derselben Nachricht beschränkt sind“ und dass Anhänge keine CID benötigen Es ist ein vernünftiges Verhalten eines E-Mail-Produkts, das Vorhandensein einer CID als Indikator für die Absicht zum Einbetten zu behandeln.

Kann ich eine Bestätigung dazu bekommen?


Fragen Sie vielleicht den RFC-Autor oder die relevante IETF-Arbeitsgruppe.
sendmoreinfo

Antworten:


8

Das Content-IDbedeutet nicht, dass ein Bild inline angezeigt werden soll. Dieser Header wird benötigt, um auf die eingebetteten Daten in HTML zu verweisen.

Da es sich bei einer E-Mail um eine Textnachricht handelt, gibt es keinen Grund, ein eingebettetes Bild anzuzeigen, solange es sich bei der E-Mail um Klartext handelt.

Einige Clients zeigen die Daten unabhängig vom HTML- oder Nur-Text-Format inline an. Dies ist jedoch kein definiertes Verhalten


8

Ich denke, Sie suchen nach dem Content-DispositionHeader-Feld, mit dem Sie den Präsentationsstil eines Körperteils (z. B. eines Bildes) als inlineoder definieren können attachment.

Hier ist ein Inline-Beispiel von Thunderbird:

--------------040202010204080305090405
Content-Type: image/png; name="test.png"
Content-Transfer-Encoding: base64
Content-ID: <part1.02080004.04000407@sample.com>
Content-Disposition: inline; filename="test.png"

Sie können mehr lesen unter:


Der Content-Disposition-Header ist nicht immer enthalten. Manchmal ist es erforderlich, basierend auf den in der Frage angegebenen Überschriften abzuleiten, ob ein Teil inline oder ein Anhang ist.
user2817219
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.