Mail() und Subject encoding

Hallo,

ist irgendwo festgelegt, wer für die Codierung der Mailheader nach RFC 2047 zuständig ist, also z.B. Umlaute im Subject codieren kann, wenn der Empfänger MTA keine 8bit Header nimmt ?
Im Moment habe ich gerade einen Rückläufer erhalten, mit der Meldung, das der Mailserver keine 8bit Zeichen im Subject mag, aber im Subject bei mail() stand natürlich ein Umlaut.
Das zu fixen ist relativ einfach, nur würde mich interressieren, ob man das wirklich immer selbst im PHP tun muss oder ob das eher ein Problem bei der Konfiguration des Providers ist.

if (preg\_match('~[\xA0-\xFF]~', $subject)) {
 $subject = preg\_replace('~([\xA0-\xFF])~e', '"=" . strtoupper(dechex(ord("$1")))', $subject);
 $subject = '=?ISO-8859-1?Q?' . $subject . '?='; 
}

Alex

Hallo Alex,

ja, das muss man (leider) von Hand erledigen. Im Header eine Mail fuerfen normalerweise nur Zeichen des US-ASCII-Zeichensatzes vorkommen. Es gibt sicherlich auch viele SMTPD’s welche da nicht so streng sind mit der Ueberpruefung, aber wenn man sicher gehen moechte sollte man sich schon an den Standard halten.
Folgender Kommentar in der PHP-Doku ist dazu recht hilfreich: http://de.php.net/manual/de/function.mail.php#77458

Gruesse
Stefan

Hallo Stefan,

danke für den Hinweis… mittlerweile habe ich auch mb_encode_mimeheader gefunden, wo man das Ganze nicht mehr von Hand machen muss.

Mir kam es nur komisch vor, weil ich bis jetzt nie damit Probleme hatte, obwohl ich das Subject nie codiert hatte, ich dachte, der SMTPD oder PHP macht das evtl. automatisch. Gestern erhielt ich dann einen Mailrückläufer von einer per phpBB gesendeten Mail mit Umlauten im Betreff, die der Zielserver nicht wollte.

Alex

Hallo Alex,

ja, das muss man (leider) von Hand erledigen. Im Header eine
Mail fuerfen normalerweise nur Zeichen des
US-ASCII-Zeichensatzes vorkommen.