Umlaute-Probleme in Mail-Subject
Kalle_B
- php
0 Tom0 Kalle_B
0 Vinzenz Mai0 dedlfix
Hallöle,
seit Stunden recherchiere ich im Web, wie man Umlaute korrekt als Mail-Subject hinbekommt. Leider ohne Erfolg.
Hier einer der vergeblichen Versuche:
$header =
"From: noreply@abc.de
Content-Type: text/plain; charset=\"utf-8\"; format=flowed";
$txt = utf8_encode( "20:00 Hänsel äöü ÄÖÜ ß" );
$name = utf8_encode( "20:00 Hänsel äöü ÄÖÜ ß" );
$subject = mb_encode_mimeheader( $name, "UTF-8", "Q" );
$h01 = mail( $arr_in['email_empfaenger'], $subject, $txt, $header );
Die Betreff-Anzeige beim Empfänger ist 20:00 Hänsel äöü ...
<die Zeichen darf ich hier nicht posten)
Das Mail-Body geht in Ordnung mit 20:00 Hänsel äöü ÄÖÜ ß
Wo liegt der Haken?
Lieben Gruß, Kalle
Hello,
wenn Du die letzten tage mitgelesen hättest, wüsstest Du es ;-)
siehe http://www.php.net/manual/en/function.mb-encode-mimeheader.php gibt es dafür inzwischen.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hello,
wenn Du die letzten tage mitgelesen hättest, wüsstest Du es ;-)
siehe http://www.php.net/manual/en/function.mb-encode-mimeheader.php gibt es dafür inzwischen.
Was wüsste ich dann? Dieses geile Beispiel auf der verlinkten Seite?
<?php
$name = ""; // kanji
$mbox = "kru";
$doma = "gtinn.mon";
$addr = mb_encode_mimeheader($name, "UTF-7", "Q") . " <" . $mbox . "@" . $doma . ">";
echo $addr;
?>
Man mag jetzt rätseln, wohin der Autor "" // kanji verschwinden ließ und was echo $addr ausgeben könnte.
Und ausserdem war dies eine Zeile in meinem Code:
$subject = mb_encode_mimeheader( $name, "UTF-8", "Q" );
Mit diesem Faden ergänzen wir also die fruchtlose Diskussion im Web um einen Beitrag. Toll.
LG Kalle
Hallo Kalle,
seit Stunden recherchiere ich im Web, wie man Umlaute korrekt als Mail-Subject hinbekommt. Leider ohne Erfolg.
warum nicht im Archiv?
$subject = mb_encode_mimeheader( $name, "UTF-8", "Q" );
Harlequin hat es eigens für Dich herausgesucht :-)
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
hurra, es funzt. Ich konnte einen Namen in ein Formular eingeben und beim Mailempfänger kommt tatsächlich als Betreff
Grüße von 21:14 Hänsel 日本語 Български
Oha, das war Schwerstarbeit. Was ich nicht wissen konnte, bei der Übernahme von $_POST in eine Variable geht offenbar die UTF-8 Eigenbschaft verloren.
Deshalb muss dieses hier
Harlequin hat es eigens für Dich herausgesucht :-)
"Before you use mb_encode_mimeheader with UTF-8 set mb_internal_encoding('UTF-8')."
nicht "irgendwo" vor mb_internal_encoding() stehen, sondern ganz oben im PHP- Script:
<?php
header('content-type: text/html; charset=utf-8'); // hatte ich schon
mb_internal_encoding('UTF-8'); // seit 2009-03-14 21:15
...
Da bin ich rein zufällig drauf gekommen. Der Rest ist dann Pipifax.
$subject = mb_encode_mimeheader( utf8_encode( "Grüße von " ).$arr_in['name'], "UTF-8", "Q" );
Lieben Gruß, Kalle
Moin!
Oha, das war Schwerstarbeit. Was ich nicht wissen konnte, bei der Übernahme von $_POST in eine Variable geht offenbar die UTF-8 Eigenbschaft verloren.
Da PHP den Strings keinerlei Eigenschaft des ihnen innewohnenden Encodings zuordnet, kann diese Eigenschaft auch nicht verloren gehen - es sei denn, was ich für sehr unwahrscheinlich halte, du redest von PHP Version 6.
Deshalb muss dieses hier
»» Harlequin hat es eigens für Dich herausgesucht :-)
"Before you use mb_encode_mimeheader with UTF-8 set mb_internal_encoding('UTF-8')."
nicht "irgendwo" vor mb_internal_encoding() stehen, sondern ganz oben im PHP- Script:
Ich weiß ja nicht, was du zwischen mb_internal_encoding() und mb_encode_mimeheader() so machst. Logisch, dass das Setting der mb_*-Funktionen erfolgt sein muss, bevor man sie anwendet.
<?php
header('content-type: text/html; charset=utf-8'); // hatte ich schon
mb_internal_encoding('UTF-8'); // seit 2009-03-14 21:15
...Da bin ich rein zufällig drauf gekommen. Der Rest ist dann Pipifax.
$subject = mb_encode_mimeheader( utf8_encode( "Grüße von " ).$arr_in['name'], "UTF-8", "Q" );
Und wenn du dein Skript direkt als UTF-8-codiert abgespeichert hättest, hättest du auch deutlich weniger Probleme mit nicht in UTF-8 codierten Strings, und folglich auch nicht die Notwendigkeit des Einsatzes von utf8_encode() für feste Strings wie "Grüße von ".
- Sven Rautenberg
echo $begrüßung;
seit Stunden recherchiere ich im Web, wie man Umlaute korrekt als Mail-Subject hinbekommt. Leider ohne Erfolg.
Die Betreff-Anzeige beim Empfänger ist 20:00 Hänsel äöü ...
Wo liegt der Haken?
Was hast du bereits zum Debugging unternommen? Wie sieht beispielsweise die Kontrollausgabe von $subject vor und nach der folgenden Zeile aus?
$subject = mb_encode_mimeheader( $name, "UTF-8", "Q" );
Bitte eine var_dump()-Ausgabe und die Angabe, welche Kodierung der Browser gerade verwendet? (Was ist im Menu Ansicht (Zeichen-)Kodierung aktuell markiert?)
echo "$verabschiedung $name";