Umlaute in mail-Subject frisst Leerzeichen
marc12
- php
Hey,
ich habe ein Problem mit meiner mail-Funktion: Wenn ich Leerzeichen im Subject habe, dann passiert folgendes
blää blää bla
wird zu
blääblää bla
Das kann ich nur verhindern, wenn ich zwischen die Umlaut-Wörter ein _ mache. Das wird dann irgendwie als Leerzeichen angezeigt. Sieht das aber so aus:
bla bla bla
und ich mache da ein Unterstrich zwischenrein, dann kommt im Mailprogramm das an:
bla_bla bla
Wie kann ich das richten?
UTF-8 Kodiert ist das alles.
Viele Grüße
marc12
Moin!
Wie kann ich das richten?
UTF-8 Kodiert ist das alles.
Aber sicher nicht korrekt, denn in Mailheaderzeilen - und "Subject" ist eine davon - sind alle Zeichen mit mehr als 7 Bit nicht uncodiert erlaubt, und UTF-8 hat reichlich von diesen unerlaubten Zeichen.
- Sven Rautenberg
Hey,
Wie kann ich das richten?UTF-8 Kodiert ist das alles.
Also wenn ich bei mir in die mail-logs schaue sind da Mails mit iso 8859-1 dabei. So fängt z.B. eine Mail an die das Wort "für" enthält:
=?iso-8859-1?Q?_f=FCr_
Ich kenne jetzt nicht den komplette Standard, aber die die Codierung sieht mir recht einfach aus, die müßte man leicht hinbebkommen.
Thomas
___________________________________________________
Mein Blog
Hi Thomas,
Ich kenne jetzt nicht den komplette Standard, aber die die Codierung sieht mir recht einfach aus, die müßte man leicht hinbebkommen.
Müsste sich hierbei um RFC 2047 handeln, welches dieses Encoding regelt:
MIME (Multipurpose Internet Mail Extensions) Part Three:
Message Header Extensions for Non-ASCII Text
Im Prinzip sagt das eigentlich nur aus, dass du nach =? zunächst den Charset angibst, nach einem weiteren Fragenzeichen dann das Kodierungsverfahren, wobei Q für Quoted-Printable und B für Base64 steht und zwischen dem nächsten Fragezeichen und dem beendenden ?= dann der kodierte Inhalt steht.
Eigentlich leicht zu implementieren, zumal PHP Funktionen zum dekodieren bzw. kodieren von wohl Base64 als auch Quoted-Printable mitliefert. Es gibts aber bestimmt auch jede Menge fertige PHP-Klassen, welche das komplett für einen erledigen.
Viele Grüße,
~ Dennis.
echo $begrüßung;
Es gibts aber bestimmt auch jede Menge fertige PHP-Klassen, welche das komplett für einen erledigen.
Es gibt in der optionalen Extension Multibyte String die Funktion mb_encode_mimeheader().
echo "$verabschiedung $name";