Example #1
0
 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;
     }
 }