phpbar.de logo

Mailinglisten-Archive

[php] Umlautkodierung fuer mehrere Email-Empfaengeradressen

[php] Umlautkodierung fuer mehrere Email-Empfaengeradressen

Andreas Stagl a.stagl at gmx.at
Die Mai 24 13:43:34 CEST 2005


Hallo Liste,

habe ein Problem beim Kodieren der Umlaute im "freidefinierbaren Teil" 
(weiss nicht genau, wie ich's besser umschreiben soll) einer 
Email-Adresse. Bzgl der Kodierung von Umlauten in der eigentlichen 
Email-Adresse zerbrech ich mir dann später den Kopf.

Generell kodiere ich Email-Header mittels md_encode_mimeheader(), was 
beispielsweise beim Subject-Header auch prima funktioniert. Lediglich 
mit From, To, Cc und anderen Headern die Email-Adressen enthalten hab 
ich ein Problem... speziell mit den empfohlenen Zeilenumbrüchen nach 72 
(oder 74) Zeichen.

Angenommen ich möchte eine Email an die folgenden Empfänger senden...
        häschen <haeschen at hasenbau.com>
        hündchen <huendchen at hundehuette.com>
        mauserich <mauserich at einlochinderwand.com>
        kätchen <kaetzchen at katzenkrob.com>
        vögelchen <voegelchen at nest.com>
...wie kodier ich dann am besten den To-Header?

Folgendes klappt nicht, da - im aktuellen Beispiel - dabei überhaupt 
nicht umgebrochen wird und ich für das Umbrechen daher selbst mittles 
wordwrap() sorgen müsste, was dann allerdings zu Problemen führt, wenn 
der zu kodierende String einmal länger als 72 Zeichen ist bzw manchmal 
auch zu vorzeitigen Umbrüchen führt, wo es eigentlich noch garnicht 
notwendig wäre (weil innerhalb einer kodierten Text-Passage keine 
Leerzeichen vorhanden sind und dort deshalb nicht umbegrochen wird... 
und ein Umbruch dort auch entsprechend kodiert werden müsste).

$to = 'To: ';
$to.= mb_encode_mimeheader('häschen','ISO-8859-15','Q').
  ' <haeschen at hasenbau.com>, ';
$to.= mb_encode_mimeheader('hündchen','ISO-8859-15','Q').
  ' <huendchen at hundehuette.com>, ';
$to.= mb_encode_mimeheader('mauserich','ISO-8859-15','Q').
  ' <mauserich at einlochinderwand.com>, ';
$to.= mb_encode_mimeheader('kätchen','ISO-8859-15','Q').
  ' <kaetzchen at katzenkrob.com>, ';
$to.= mb_encode_mimeheader('vögelchen','ISO-8859-15','Q').
  ' <voegelchen at nest.com>';

Folgendes bricht zwar korrekt um, kodiert aber zuviel bzw setzt alle 
Empfänger gemeinsam zwischen ein einziges "=?ISO-8859-15?Q?"-Start-Tag 
und ein "?="-End-Tag anstatt für jeden Empfänger separate Tags zu öffnen 
und zu schließen. Mein Thunderbird käme damit zwar zurecht, GMX und Co 
jedoch nicht.

$to = 'To: ';
$to.= 'häschen <haeschen at hasenbau.com>, ';
$to.= 'hündchen <huendchen at hundehuette.com>, ';
$to.= 'mauserich <mauserich at einlochinderwand.com>, ';
$to.= 'kätchen <kaetzchen at katzenkrob.com>, ';
$to.= 'vögelchen <voegelchen at nest.com>';
$to = mb_encode_mimeheader($to,'ISO-8859-15','Q');

Das gewünschte Resultat wäre jedoch in etwa wie folgt:

To: =?ISO-8859-15?Q?h=E4schen?= <haeschen at hasenbau.com>,
 =?ISO-8859-15?Q?h=FCndchen?= <huendchen at hundehuette.com>,
 mauserich <mauserich at einlochinderwand.com>, =?ISO-8859-15?Q?k=E4tz?=
 =?ISO-8859-15?Q?chen?= <kaetzchen at katzenkrob.com>,
 =?ISO-8859-15?Q?v=F6gelchen?= <voegelchen at nest.com>

Hat jemand eine Idee, wie ich das hinbekommen könnte?

Dank euch schon mal im Voraus!

Gruß aus Wien,
Andy


php::bar PHP Wiki   -   Listenarchive