Hallo zusammen!

Zuerst mal allen frohe Weihnachten ;-).

Ich bin nicht mehr sicher, ob dieses Thema nicht zu Gaerts Angelegenheit vor 2 Tagen gehört, deshalb eröffne ich mal einen neuen Thread.

Ich sitze seit ein paar Tagen einem 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 Abend noch, der MSVerweigerer