IMAP Body

Ja müsstest du, denn

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.
 
@saftmeister
Gibt es nicht einfach eine Lib :)
Code:
(stdClass)#107 (11) { ["type"]=> int(1) ["encoding"]=> int(0) ["ifsubtype"]=> int(1) ["subtype"]=> string(6) "SIGNED" ["ifdescription"]=> int(0) ["ifid"]=> int(0) ["ifdisposition"]=> int(0) ["ifdparameters"]=> int(0) ["ifparameters"]=> int(1) ["parameters"]=> array(3) { [0]=> object(stdClass)#97 (2) { ["attribute"]=> string(6) "micalg" ["value"]=> string(4) "sha1" } [1]=> object(stdClass)#105 (2) { ["attribute"]=> string(8) "boundary" ["value"]=> string(47) "Apple-Mail-9AEAF933-0C33-4BA4-8E64-1704B4BD2B02" } [2]=> object(stdClass)#103 (2) { ["attribute"]=> string(8) "protocol" ["value"]=> string(27) "application/pkcs7-signature" } } ["parts"]=> array(2) { [0]=> object(stdClass)#104 (12) { ["type"]=> int(0) ["encoding"]=> int(3) ["ifsubtype"]=> int(1) ["subtype"]=> string(5) "PLAIN" ["ifdescription"]=> int(0) ["ifid"]=> int(0) ["lines"]=> int(1) ["bytes"]=> int(26) ["ifdisposition"]=> int(0) ["ifdparameters"]=> int(0) ["ifparameters"]=> int(1) ["parameters"]=> array(1) { [0]=> object(stdClass)#106 (2) { ["attribute"]=> string(7) "charset" ["value"]=> string(5) "utf-8" } } } [1]=> object(stdClass)#112 (13) { ["type"]=> int(3) ["encoding"]=> int(3) ["ifsubtype"]=> int(1) ["subtype"]=> string(15) "PKCS7-SIGNATURE" ["ifdescription"]=> int(0) ["ifid"]=> int(0) ["bytes"]=> int(3184) ["ifdisposition"]=> int(1) ["disposition"]=> string(10) "attachment" ["ifdparameters"]=> int(1) ["dparameters"]=> array(1) { [0]=> object(stdClass)#113 (2) { ["attribute"]=> string(8) "filename" ["value"]=> string(9) "smime.p7s" } } ["ifparameters"]=> int(1) ["parameters"]=> array(1) { [0]=> object(stdClass)#114 (2) { ["attribute"]=> string(4) "name" ["value"]=> string(9) "smime.p7s" } } } } } object(stdClass)#107 (11) { ["type"]=> int(1) ["encoding"]=> int(0) ["ifsubtype"]=> int(1) ["subtype"]=> string(6) "SIGNED" ["ifdescription"]=> int(0) ["ifid"]=> int(0) ["ifdisposition"]=> int(0) ["ifdparameters"]=> int(0) ["ifparameters"]=> int(1) ["parameters"]=> array(3) { [0]=> object(stdClass)#112 (2) { ["attribute"]=> string(6) "micalg" ["value"]=> string(4) "sha1" } [1]=> object(stdClass)#114 (2) { ["attribute"]=> string(8) "boundary" ["value"]=> string(47) "Apple-Mail-9AEAF933-0C33-4BA4-8E64-1704B4BD2B02" } [2]=> object(stdClass)#113 (2) { ["attribute"]=> string(8) "protocol" ["value"]=> string(27) "application/pkcs7-signature" } } ["parts"]=> array(2) { [0]=> object(stdClass)#104 (12) { ["type"]=> int(0) ["encoding"]=> int(3) ["ifsubtype"]=> int(1) ["subtype"]=> string(5) "PLAIN" ["ifdescription"]=> int(0) ["ifid"]=> int(0) ["lines"]=> int(1) ["bytes"]=> int(26) ["ifdisposition"]=> int(0) ["ifdparameters"]=> int(0) ["ifparameters"]=> int(1) ["parameters"]=> array(1) { [0]=> object(stdClass)#106 (2) { ["attribute"]=> string(7) "charset" ["value"]=> string(5) "utf-8" } } } [1]=> object(stdClass)#103 (13) { ["type"]=> int(3) ["encoding"]=> int(3) ["ifsubtype"]=> int(1) ["subtype"]=> string(15) "PKCS7-SIGNATURE" ["ifdescription"]=> int(0) ["ifid"]=> int(0) ["bytes"]=> int(3184) ["ifdisposition"]=> int(1) ["disposition"]=> string(10) "attachment" ["ifdparameters"]=> int(1) ["dparameters"]=> array(1) { [0]=> object(stdClass)#105 (2) { ["attribute"]=> string(8) "filename" ["value"]=> string(9) "smime.p7s" } } ["ifparameters"]=> int(1) ["parameters"]=> array(1) { [0]=> object(stdClass)#97 (2) { ["attribute"]=> string(4) "name" ["value"]=> string(9) "smime.p7s" } } } } } object(stdClass)#107 (11) { ["type"]=> int(1) ["encoding"]=> int(0) ["ifsubtype"]=> int(1) ["subtype"]=> string(6) "SIGNED" ["ifdescription"]=> int(0) ["ifid"]=> int(0) ["ifdisposition"]=> int(0) ["ifdparameters"]=> int(0) ["ifparameters"]=> int(1) ["parameters"]=> array(3) { [0]=> object(stdClass)#103 (2) { ["attribute"]=> string(6) "micalg" ["value"]=> string(4) "sha1" } [1]=> object(stdClass)#97 (2) { ["attribute"]=> string(8) "boundary" ["value"]=> string(47) "Apple-Mail-9AEAF933-0C33-4BA4-8E64-1704B4BD2B02" } [2]=> object(stdClass)#105 (2) { ["attribute"]=> string(8) "protocol" ["value"]=> string(27) "application/pkcs7-signature" } } ["parts"]=> array(2) { [0]=> object(stdClass)#104 (12) { ["type"]=> int(0) ["encoding"]=> int(3) ["ifsubtype"]=> int(1) ["subtype"]=> string(5) "PLAIN" ["ifdescription"]=> int(0) ["ifid"]=> int(0) ["lines"]=> int(1) ["bytes"]=> int(26) ["ifdisposition"]=> int(0) ["ifdparameters"]=> int(0) ["ifparameters"]=> int(1) ["parameters"]=> array(1) { [0]=> object(stdClass)#106 (2) { ["attribute"]=> string(7) "charset" ["value"]=> string(5) "utf-8" } } } [1]=> object(stdClass)#113 (13) { ["type"]=> int(3) ["encoding"]=> int(3) ["ifsubtype"]=> int(1) ["subtype"]=> string(15) "PKCS7-SIGNATURE" ["ifdescription"]=> int(0) ["ifid"]=> int(0) ["bytes"]=> int(3184) ["ifdisposition"]=> int(1) ["disposition"]=> string(10) "attachment" ["ifdparameters"]=> int(1) ["dparameters"]=> array(1) { [0]=> object(stdClass)#114 (2) { ["attribute"]=> string(8) "filename" ["value"]=> string(9) "smime.p7s" } } ["ifparameters"]=> int(1) ["parameters"]=> array(1) { [0]=> object(stdClass)#112 (2) { ["attribute"]=> string(4) "name" ["value"]=> string(9) "smime.p7s" } } } } } object(stdClass)#107 (11) { ["type"]=> int(1) ["encoding"]=> int(0) ["ifsubtype"]=> int(1) ["subtype"]=> string(6) "SIGNED" ["ifdescription"]=> int(0) ["ifid"]=> int(0) ["ifdisposition"]=> int(0) ["ifdparameters"]=> int(0) ["ifparameters"]=> int(1) ["parameters"]=> array(3) { [0]=> object(stdClass)#113 (2) { ["attribute"]=> string(6) "micalg" ["value"]=> string(4) "sha1" } [1]=> object(stdClass)#112 (2) { ["attribute"]=> string(8) "boundary" ["value"]=> string(47) "Apple-Mail-9AEAF933-0C33-4BA4-8E64-1704B4BD2B02" } [2]=> object(stdClass)#114 (2) { ["attribute"]=> string(8) "protocol" ["value"]=> string(27) "application/pkcs7-signature" } } ["parts"]=> array(2) { [0]=> object(stdClass)#104 (12) { ["type"]=> int(0) ["encoding"]=> int(3) ["ifsubtype"]=> int(1) ["subtype"]=> string(5) "PLAIN" ["ifdescription"]=> int(0) ["ifid"]=> int(0) ["lines"]=> int(1) ["bytes"]=> int(26) ["ifdisposition"]=> int(0) ["ifdparameters"]=> int(0) ["ifparameters"]=> int(1) ["parameters"]=> array(1) { [0]=> object(stdClass)#106 (2) { ["attribute"]=> string(7) "charset" ["value"]=> string(5) "utf-8" } } } [1]=> object(stdClass)#105 (13) { ["type"]=> int(3) ["encoding"]=> int(3) ["ifsubtype"]=> int(1) ["subtype"]=> string(15) "PKCS7-SIGNATURE" ["ifdescription"]=> int(0) ["ifid"]=> int(0) ["bytes"]=> int(3184) ["ifdisposition"]=> int(1) ["disposition"]=> string(10) "attachment" ["ifdparameters"]=> int(1) ["dparameters"]=> array(1) { [0]=> object(stdClass)#97 (2) { ["attribute"]=> string(8) "filename" ["value"]=> string(9) "smime.p7s" } } ["ifparameters"]=> int(1) ["parameters"]=> array(1) { [0]=> object(stdClass)#103 (2) { ["attribute"]=> string(4) "name" ["value"]=> string(9) "smime.p7s" } } } } }
 
Ja, die gibt es: php_imap.dll / php_imap.so ;-)

Was erwartest du von der Lib? Das sie dir das Programmieren/Nachdenken/Lesen von Dokumentation abnimmt? ;-)
 
Probier es mal mit dem Code:

PHP:
$body = imap_fetchbody($mbox, $mnum, $part);
$structure = imap_bodystruct($mbox, $mnum, $part);
$bodyEncoding = $structure->encoding;

echo "Encoding: $bodyEncoding<br/>";
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;
}
echo "Body nach decoding: $body<br/>";
 
Ok, ich bin zwar eher dafür, die Materie zu verstehen, als sich irgendeinen Code zu besorgen, der die Basics verbirgt, aber ich hab das hier gefunden:

https://github.com/geerlingguy/Imap

Ich werde aber aus Interesse mal versuchen, es "zu Fuß" zu programmieren, einfach weil ich den Ehrgeiz habe :-) Allerdings bräuchte ich dann eine Mail, die dieses Format hat. Ich schicke die mal meine private Mail-Adresse, damit du mir eine senden kannst. Aber die Kommunikation wird weiterhin über das Forum laufen, weil es auch andere geben könnte, die sich für eine evtl. Lösung interessieren.
 
Zurück