Exemple #1
0
 /**
  * @param $mid
  * @param $p
  * @param $part
  */
 private static function getPart($mid, $p, $part)
 {
     $data = $part ? imap_fetchbody(self::$mbox, $mid, $part) : imap_body(self::$mbox, $mid);
     if ($p->encoding == 4) {
         $data = quoted_printable_decode($data);
     } elseif ($p->encoding == 3) {
         $data = base64_decode($data);
     }
     $params = array();
     if ($p->parameters) {
         foreach ($p->parameters as $x) {
             $params[strtolower($x->attribute)] = $x->value;
         }
     }
     if ($p->dparameters) {
         foreach ($p->dparameters as $x) {
             $params[strtolower($x->attribute)] = $x->value;
         }
     }
     if ($params['filename'] || $params['name']) {
         $filename = $params['filename'] ? $params['filename'] : $params['name'];
         if (self::$attachments[$filename]) {
             self::$attachments[time() . '_' . $filename] = $data;
         } else {
             self::$attachments[$filename] = $data;
         }
     } elseif ($p->type == 0 && $data) {
         if (strtolower($p->subtype) == 'plain') {
             self::$plainmsg .= trim($data) . "\n\n";
         } else {
             self::$htmlmsg .= $data . "<br><br>";
         }
         self::$charset = $params['charset'];
     } elseif ($p->type == 2 && $data) {
         self::$plainmsg .= trim($data) . "\n\n";
     }
     if ($p->parts) {
         foreach ($p->parts as $partno => $p2) {
             self::getpart($mid, $p2, $part . '.' . ($partno + 1));
         }
     }
 }