/** * @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)); } } }