transfer-kodierte Mails richtig ausgeben.
MSVerweigerer
- php
Hallo zusammen!
Zuerst mal allen frohe Weihnachten ;-).
Ich sitze, wie vor einigen Tagen schonmal gepostet, noch immer an meinem Webmail-Script per IMAP und habe gerade ein riesen Problem mit der Transfer-Kodierung von Mails.
Zum Beispiel habe ich folgendes Scipt:
$body = string imap_body ($mbox, $message_id);
echo $body;
Die Ausgabe ist dann der body der Nachricht Nummer $message_id, soweit klar. Doch durch die Transfer-Kodierung bekomme ich ja keine Sonderzeichen (ä, ö, ü). Folgenden Check habe ich durchgeführt:
$struct = imap_fetchstructure ($mbox, $message_id);
echo $struct->encoding;
Das Ergebnis liefert eine Zahl von 0 bis 5, wobei laut PHP-Doku die Zahlen folgendes bedeuten:
0 = 7BIT
1 = 8BIT
2 = BINARY
3 = BASE64
4 = QUOTED-PRINTABLE
5 = OTHER
Per if-Abfragen dekodiere ich jetzt alle Nachrichten, die ich per for-Schleife nacheinander aufrufe nach dem notwendigen Schema. Doch das entscheidende Problem:
Drei Nachrichten werden alle als 0, also 7bit ausgegeben, doch steht im Header der einen Nachricht "8bit", im Header der beiden anderen Nachrichten "quoted-printable". Die Ausgabe ist ebenso verwirrend: Nachricht 1 muss ja nicht dekodiert werden (8bit = ASCII), doch die beiden anderen bekomme ich einfach mit keiner Dekodierung richtig gebacken. imap_qprint($body) und imap_base64($body) ziehen ebensowenig wie die infache $body-Ausgabe ohne Dekosierung.
Kann mir bitte jemand bei dem Problem helfen? Interessant ist auch die Frage, warum alle drei emails als 7bit von PHP definiert werden, obwohl sie alle drei nicht 7bit sind.
Ein Hinweis noch, der mir aufgefallen ist: Nachricht 1 ist HTML, Nachricht 2 und 3 (die nicht wollen wie ich will) sind beide Text.
Vielen Dank für jede Hilfe!
Schönen Tag, der MSVerweigerer