saftmeister
Nutze den Saft!
Ja müsstest du, denn
Folglich müsstest du den Code so anpassen:
EDIT: Ich glaub, ich hab das auch nicht richtig gemacht. Das Manual sagt ja, dass $parts dann ein Array sein müsste, in dem die Nachrichten-Teile jeweils ein Element belegen und die Struktur genau wie $structure aufgebaut ist. Folglich würde ich jetzt naiv annehmen, dass $parts ein Element $part (siehe imap_fetchbody()) enthält, in dem wiederum das Encoding für den Nachrichtenteil hinterlegt ist.
http://www.php.net/manual/de/function.imap-fetchstructure.php hat gesagt.:parts Wenn der Nachrichtenteil selbst weitere untergeorgnete Nachrichtenteile enthält, so wird hier ein Array mit Objekten für diese Teile angelegt. Die Elemente dieses Arrays sind selbst jeweils wieder Objekte von der hier beschriebenen Struktur.
Folglich müsstest du den Code so anpassen:
PHP:
$body = imap_fetchbody($mbox, $mnum, $part);
$structure = imap_fetchstructure($mbox, $mnum);
$bodyEncoding = $structure->encoding;
if(isset($structure->parts['encoding']) && is_int($structure->parts['encoding']))
{
$bodyEncoding = intval($structure->parts['encoding']);
}
switch($bodyEncoding)
{
case 0:
// TODO: Behandle 7-Bit-Nachrichten
break;
case 1:
// TODO: Behandle 8-Bit-Nachrichten
break;
case 2:
// TODO: Behandle Binary-Encoded-Nachrichten
break;
case 3:
$body = base64_decode($body);
break;
case 4:
// TODO: Behandle QUOTED-PRINTABLE-Nachrichten
break;
case 5:
// TODO: Behandle Sonstig-Encodierte-Nachrichten
break;
default:
// TODO: Behandle Ausnahme
break;
}
EDIT: Ich glaub, ich hab das auch nicht richtig gemacht. Das Manual sagt ja, dass $parts dann ein Array sein müsste, in dem die Nachrichten-Teile jeweils ein Element belegen und die Struktur genau wie $structure aufgebaut ist. Folglich würde ich jetzt naiv annehmen, dass $parts ein Element $part (siehe imap_fetchbody()) enthält, in dem wiederum das Encoding für den Nachrichtenteil hinterlegt ist.