2016-09-19 1 views
0

Ich bin wirklich verwirrt, wenn es um das Format Content-Id Header in Nachrichtenteile kommt.Das genaue Format der Content-ID-Header

Es scheint mir, dass nur RFC 2045 das Format des Headers umfasst, wenn auch nur kurz:

ein hochrangiges User-Agent Bei der Konstruktion kann es wünschenswert sein einen Körper zu ermöglichen Bezug auf eine andere zu machen . Dementsprechend kann Körper seine
markiert mit dem "Content-ID" Header-Feld, die syntaktisch
identisch mit dem "Message-ID" Header-Feld ist:

id := "Content-ID" ":" msg-id 

Wie die Message-ID-Werte, Content- ID-Werte müssen generiert werden, um weltweit einzigartig zu sein.

RFC 2822 erläutert das Format eines Token msg-id etwa so:

Die Nachrichtenkennung (msg-id) in der Syntax ein Winkel-addr Konstrukt ohne den inneren CFWS ähnlich ist.

message-id = "Message-ID:" msg-id CRLF

in-reply-to = "In-Reply-To:" 1 * msg-id CRLF

Referenzen = Referenzen“ :“1 * msg-id CRLF

msg-id = [CFWS] "<" id-links "@" id-right ">"[CFWS]

id-links = Punkt-Atom-Text/no-fold-quote/obs-id-links

i d-rechts = dot-Atom-text/no-fach-wörtliche/obs-id-rechts

no-fach-quote = DQUOTE * (qtext/quoted-pair) DQUOTE

no-fach-wörtliche = "[" * (dtext/quoted-pair) "]"

Lange Rede kurzer Sinn: es enthält den bei ('@') Symbol, genau wie die Message-Id Header einer Nachricht. Fast alle leserfreundlichen Artikel im MIME-Format geben jedoch Beispiele für Content-Idohne das das at-Symbol (einschließlich nicht-wirklich-globale Bezeichner wie myimagecid oder inlineimage001 sowie zufällig generierte UUIDS ohne das Symbol at). Sie würden sicherlich die Bedeutung des '@' - Symbols hervorheben, wenn das notwendig wäre, genauso wie sie es mit dem Header Message-Id tun, richtig? Recht?

Ich habe einige Tests auf der realen Welt E-Mail-Clients laufen und sehen, wie sie E-Mails mit eingebetteten Inline-Bilder zusammensetzen:

  • Thunderbird erzeugt Bezeichner mit dem at-Symbol. Beispiel: [email protected]
  • Google Mail generiert IDs ohne Symbol und ohne Domäne-Teil.Beispiel: ii_abc1234x0_12345ab12abcdefa

habe ich nicht getestet keine weiteren E-Mail-Clients (wenn jemand getan hat, es wäre toll, die Liste oben zu vervollständigen), aber diese beiden zeigen bereits den auffallenden Unterschied. Google nicht RFC-Standards einhalten? Es sieht bestimmt stinkig aus und ich möchte wissen, ob das daran liegt, dass ich etwas verpasst habe, oder weil das Format doch nicht wirklich so wichtig ist (was sich auf die Dauer eher störend anfühlt). Ich bin auch interessiert zu überprüfen, wie viele populäre E-Mail-Clients das 'at' Symbol tatsächlich verwerfen.

Antwort

1

Gehen Sie durch, was die Spezifikation sagt, nicht, was einige Mail-Clients tun.

Also ja, ein Content-Id Header sollte einen Wert haben, der der Art und Weise entspricht, wie die Spezifikation sagt und dafür sollte ein '@' Symbol haben.

Die Welt der E-Mail ist ein gebrochenes Höllenloch von vielen verschiedenen Mail-Clients und Servern, die ihr eigenes Ding machen und die Standards nicht respektieren.

Als jemand, der Mail-Software für die letzten 17 Jahre geschrieben hat, kann ich Ihnen versichern, dies ist nicht der einzige Ort, an dem Google von den Spezifikationen abweicht.

+0

Spezifikationen sind beim Verfassen von E-Mails sehr nützlich. Wenn ich eingehende E-Mails analysiere, muss ich mir bewusst sein, welche Verstöße gegen den Standard beabsichtigt sind (Gmail) oder ob sie bösartig sein sollen (Spam) und entsprechend handeln. Ich kann nicht einfach jede E-Mail ablehnen, die nicht den Spezifikationen entspricht. Nutzen Sie nun Ihre 17-jährige Erfahrung in der Verwaltung dieses verrückten Hauses. Könnten Sie bitte Ihre Antwort erweitern und mir mitteilen, welche anderen Teile der Spezifikationen wahrscheinlich von E-Mail-Clients/-Servern verletzt werden? Ich bin auch sehr neugierig, welche anderen Spezifikationen Google verletzt (es muss nicht mailbezogen sein). – Tomalla

+1

Ich habe ein bisschen über Parsing Adressheader zurück im Jahr 2013 http://jeffreystedfast.blogspot.com/2013/08/why-decoding-rfc2047-encoded-headers-is.html und dann einen Thunderbird-Entwickler, der schimpfte (viel Eloquenter als ich selbst) über ähnliche Probleme mit E-Mails, die Sie unter http://quetzalcoatal.blogspot.com/ finden - er hat eine ganze Reihe von Blog-Posts, die ich Ihnen sehr empfehlen würde, wenn Sie daran interessiert sind, einen MIME-Parser zu implementieren oder auch nur E-Mail-Adressen-Parser. – jstedfast

+1

Die anderen GMail-Abweichungen von den Mail-Spezifikationen, die ich entdeckt habe, waren in ihrer IMAP-Implementierung. Zum Beispiel haben sie nicht die 'ALL', 'FAST' oder' FULL' Aliase behandelt, die vor ein paar Jahren für den 'FETCH' Befehl definiert wurden (vielleicht ist das jetzt behoben, da bin ich mir nicht sicher). Die IMAP-Serverimplementierung von Google Mail bricht ab, wenn sie verschachtelte Multiparts mit der gleichen Grenze trifft, und gibt eine "BODYSTRUCTURE" wie das Beispiel in https://github.com/jstedfast/MailKit/issues/205 zurück - während ich aus der Sicht eines IMAP-Clients ärgerlich bin verstehen und mit Google zu diesem Thema sympathisieren. – jstedfast