Email subject encoding
Martin aus Wien
- php
Hallo allerseits,
ich benütze die PHP Funktion mail() und kodiere das Subject so:
$subject = "Test";
$subject = "=?utf-8?Q?=".quoted_printable_encode($subject)."?=";
In Outlook, Pegasus und anderen Mailprogrammen wird das Subject so angezeigt:
Subject: Test
In "Ipswich Web Messaging" wird das Subject so angezeigt:
Subject: =?utf-8?Q?=Test?=
Was mache ich falsch? Und gehört nach dem dritten ? ein = oder nicht? Ich habe da verschiedene Beispiele gefunden.
Gruß und Dank
Martin aus Wien
Hallo,
ich benütze die PHP Funktion mail() und kodiere das Subject so:
$subject = "Test";
$subject = "=?utf-8?Q?=".quoted_printable_encode($subject)."?=";
das ist AFAIS nicht ganz korrekt (siehe RFC 2047, Abschnitt 2 mit Beispielen). Das mittlere '=' gehört da nicht hin.
In Outlook, Pegasus und anderen Mailprogrammen wird das Subject so angezeigt:
Subject: Test
Die sehen vermutlich großzügig über den Fehler hinweg.
In "Ipswich Web Messaging" wird das Subject so angezeigt:
Subject: =?utf-8?Q?=Test?=
Ich kenne "Ipswich Web Messaging" nicht, aber ich würde einfach mal vermuten, dass die Burschen in Ipswich entweder von der Codierung von Header-Feldern in Mails noch nichts gehört haben, oder dabei so pingelig vorgehen, dass ein kleiner Fehler gleich die ganze Decodierung scheitern lässt.
Was mache ich falsch? Und gehört nach dem dritten ? ein = oder nicht? Ich habe da verschiedene Beispiele gefunden.
Im verlinkten RFC ist an dieser Stelle grundsätzlich kein '='.
So long,
Martin
Danke!
Der Ipswich ist nicht schuld und auch nicht das überzählige =.
Meine quoted_printable Funktion war nicht korrekt, hat nämlich die Leerräume nicht in Unterstriche übersetzt.
Also pingelig, aber korrekt, der Ipswich.
Gruß und Dank
Martin
Hi,
Der Ipswich ist nicht schuld und auch nicht das überzählige =.
Meine quoted_printable Funktion war nicht korrekt, hat nämlich die Leerräume nicht in Unterstriche übersetzt.
Unterstriche? Quoted Printable sollte Leerzeichen eigentlich in =20 umschlüsseln - und selbst das nicht zwingend; uncodierte Leerzeichen sind in Quoted-Printable durchaus erlaubt. Gemäß RFC 2047 müssen sie in derart codierten Mailheadern aber als =20 formuliert werden. Unterstriche wären mir in dem Zusammenhang allerdings neu.
Ciao,
Martin
Gemäß RFC 2047 müssen sie in derart codierten Mailheadern aber als =20 formuliert werden. Unterstriche wären mir in dem Zusammenhang allerdings neu.
Stimmt. Das mit den Unterstrichen hab ich aus dem Wikipedia-Artikel "MIME" und es funktioniert.
Es steht im Abschnitt 4.2(2) von RFC 2047:
The 8-bit hexadecimal value 20 (e.g., ISO-8859-1 SPACE) may be
represented as "_" (underscore, ASCII 95.). (This character may
not pass through some internetwork mail gateways, but its use
will greatly enhance readability of "Q" encoded data with mail
readers that do not support this encoding.)
Gruß
Martin aus Wien
Hi,
Gemäß RFC 2047 müssen sie in derart codierten Mailheadern aber als =20 formuliert werden. Unterstriche wären mir in dem Zusammenhang allerdings neu.
Es steht im Abschnitt 4.2(2) von RFC 2047:
hehe, so weit habe ich nicht mehr gelesen. ;-)
The 8-bit hexadecimal value 20 (e.g., ISO-8859-1 SPACE) may be
represented as "_" (underscore, ASCII 95.). (This character may
not pass through some internetwork mail gateways, but its use
will greatly enhance readability of "Q" encoded data with mail
readers that do not support this encoding.)
Mit anderen Worten: "Du darfst die Leerzeichen durch Unterstriche ersetzen anstatt sie mit =20 auszudrücken, das sieht hübsch aus, könnte aber andere Probleme nach sich ziehen."
Alles klar,
Martin
Moin!
Der Ipswich ist nicht schuld und auch nicht das überzählige =.
Meine quoted_printable Funktion war nicht korrekt, hat nämlich die Leerräume nicht in Unterstriche übersetzt.
Warum verwendest du nicht http://de2.php.net/manual/en/function.mb-encode-mimeheader.php?
- Sven Rautenberg