public function getPart($mid, $mimeType, $connection, $encoding = false, $struct = '', $partNumber = '') { if (!$struct && $mid) { $struct = imap_fetchstructure($connection, $mid); } if ($struct && !$struct->ifdparameters && in_array($mimeType, array('TEXT/PLAIN', 'TEXT/HTML'))) { $partNumber = $partNumber ? $partNumber : 1; if ($text = imap_fetchbody($connection, $mid, $partNumber)) { if ($struct->encoding == 3 or $struct->encoding == 4) { $text = imapRoutine::decodeText($struct->encoding, $text); $charset = null; if ($encoding) { if ($struct->ifparameters) { if (!strcasecmp($struct->parameters[0]->attribute, 'CHARSET') && strcasecmp($struct->parameters[0]->value, 'US-ASCII')) { $charset = trim($struct->parameters[0]->value); } $text = imapRoutine::mimeEncode($text, $charset, $encoding); } } } return $text; } // Do recursive search $text = ''; if ($struct && !empty($struct->parts)) { while (list($i, $substruct) = each($struct->parts)) { if ($partNumber) { $prefix = $partNumber . '.'; if ($result = $this->getPart($mid, $mimeType, $encoding, $substruct, $prefix . ($i + 1), $partNumber)) { $text .= $result; } } } } return $text; } }