PHP Email Subject encoding

Ind0r

Lieutenant
Registriert
März 2008
Beiträge
585
Mein Subject wird zurzeit folgendermaßen behandelt:

$strSubject = $strSubject = mb_encode_mimeheader($strSubject ,"UTF-8");

Der Betreff wird trotzdem noch fehlerhaft angezeigt.

Mein Ölfeld ist das älteste in ganz Üb

Sollte eig. so angezeigt werden --> "Mein Ölfeld ist das älteste in ganz Überlingen & Umgebung!"

So sieht der Email Header aus:
Subject: Mein =?UTF-8?B?w4PClmxmZWxkIGlzdCBkYXMgw4PCpGx0ZXN0ZSBpbiBnYW56IMODwpxi?=


Könnt ihr mir sagen wieso der Betreff jedes mal scheiße aussieht bin da schon 2h am Werk und hab immer noch keine lösung.

Danke.

Mridul
 
Ich bin a.) kein PHP-Profi und b.) hasse Zeichensätze :D, aber evtl. stellt dein eMail-Programm die Mail nicht als UTF8 sondern z.b. als ISO-irgendwas dar?

Ich hab derzeit das Problem bei Outlook 2007, dass er zwar auf automatisch steht, aber immer ISO-xxxx nimmt, obwohls UTF8-Mails sind.
 
Patric_ schrieb:
Ich bin a.) kein PHP-Profi und b.) hasse Zeichensätze :D, aber evtl. stellt dein eMail-Programm die Mail nicht als UTF8 sondern z.b. als ISO-irgendwas dar?

Ich hab derzeit das Problem bei Outlook 2007, dass er zwar auf automatisch steht, aber immer ISO-xxxx nimmt, obwohls UTF8-Mails sind.

Nope charset ist utf-8 definiert :(
 
Mit welchen Programm rufst du ab?

Die Benachrichtigungs-Mail vom Forum hier hatte auch keine Umlaute drin, stand aber auf utf8.
Ich hab dann auf ISO gestellt, dann hatte ich die "selben" Anzeigeprobleme wie du und dann zurück auf utf8 und schon hat er mir alles richtig dargestellt. Ob das jetzt ein Problem von Outlook ist (nehme ich schon an) oder vom Server/Script, das die Mail verschickt, weiss ich (noch) nicht 100%.

Brauchst du zwingend mb_encode_mimeheader? Hab mit den mb_-Sachen noch nix am Hut gehabt.
Evtl. reichts wenn du utf8_encode nimmst und das Ergebnis dann per mail() (oder halt der mb_send_mail) verwendest?
 
Alles mit php.
Ich ruf meinem Email klasse auf die dann die Emails verschickt.
An Outlook liegts definitiv nicht da es in web,gmx und und auch falsch angezeigt wird.
Und wenn ich das ecoding gedöns weg lasse, lässt er die Umlaute einfach aus.
Ich hab keine Ahnung wieso das so angezeigt wird.
 
Patric_ schrieb:
Ich hab derzeit das Problem bei Outlook 2007, dass er zwar auf automatisch steht, aber immer ISO-xxxx nimmt, obwohls UTF8-Mails sind.

Dann ist wahrscheinlich utf-8 im Header nicht korrekt spezifiziert.


Versuchs mal mit dieser Funktion:


PHP:
function utf8mail ($to, $from, $subject, $text) {
	$header  = "MIME-Version: 1.0\n";
	$header .= 'Content-Type: text/plain; charset="UTF-8"'."\n";
	$header .= "Content-Transfer-Encoding: 8bit\n";
	$header .= "From: ${from}\n";
	$header .= "X-Mailer: PHP-Mailer\n";
	
	$subject = '=?UTF-8?B?'.base64_encode($subject).'?=';
	mail($to, $subject, mb_wordwrap(html_entity_decode($text), 70), $header);
}

function mb_wordwrap( $str, $width, $break = "\n" ) {
        $formatted = '';
        $position = -1;
        $prev_position = 0;
        $last_line = -1;

        /// looping the string stop at each space
        while( $position = mb_stripos( $str, " ", ++$position, 'utf-8' ) ) {
                if( $position > $last_line + $width + 1 ) {
                        $formatted.= mb_substr( $str, $last_line + 1, $prev_position - $last_line - 1, 'utf-8' ).$break;
                        $last_line = $prev_position;
                }
                $prev_position = $position;
        }

        /// adding last line without the break
        $formatted.= mb_substr( $str, $last_line + 1, mb_strlen( $str ), 'utf-8' );
        return $formatted;
}
 
Hi luky, mein Problem ist (leider) völlig unabhängig von PHP.
Ich hab das bei fast allen Mails, scheint ein Outlook-Problem zu sein, hab aber auch noch nicht weiter geschaut, worans liegen könnte
 
Zurück
Oben