Felix Riesterer: Umlaute im Mailheader - die x.te

Beitrag lesen

Liebe Experten,

mit Hilfe des Forumsarchivs bin ich zu einer für mich im Moment zufriedenstellenden Lösung gekommen, um meine UTF-8-kodierten Mails sinnvoll zu versenden. Warum nun dieses Posting? Mir ist etwas aufgefallen, von dem ich gerne Euren Rat hätte, ob ich da etwas korrigieren sollte, oder ob das überhaupt nicht in meiner Macht steht, korrigiert zu werden.

Mein GB-Script, das nun alles in UTF-8 kodiert, sendet mir eine Mail, die im Postfach von GMX so aussieht:

(Man ignoriere bitte die Schreibweise für "neuen" - sie ist nur aus Testzwecken so gewählt.)

Da sieht der Mailheader so aus, wie ich das auch erwarten würde. Öffne ich jedoch die Mail, dann sieht das Ganze plötzlich so aus:

Hier meine technische Lösung, um Header-Daten zu kodieren:

function encode_header ($str) {  
    // turn every non-ASCII character into a special UTF-8 representation  
    $output = '';  
  
    for ($i = 0; $i < strlen($str); $i++) {  
        $char = substr($str, $i, 1);  
        if (ord($char) > 127) {  
            $output .= '='.strtoupper(dechex(ord($char)));  
        } else  
            $output .= str_replace(' ', '=20', $char); // encode spaces  
    }  
  
    return '=?UTF-8?Q?'.$output.'?=';  
}  

Für den Absender erzeuge ich den String z.B. so (stark vereinfacht):

$header = 'From: '.encode_header($sender)."\n";

Nun meine Frage: Ist meine verwendete Kodierung verbesserungswürdig, oder ist hier einfach GMX entsprechend inkonsequent - oder sollte ich aufgrund von Kompatibilitätsgründen mit Mailprogrammen (ich benutze keines, daher habe ich da überhaupt keine Erfahrungswerte!) auf eine solche Kodierung völlig verzichten?

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)