Example #1
0
 /**
  * Recursive function to get message parts
  *
  * @param $messageParts
  * @param string $prefix
  * @param int $index
  * @param bool $fullPrefix
  */
 public function recurse($messageParts, $prefix = '', $index = 1, $fullPrefix = true)
 {
     foreach ($messageParts as $part) {
         $partNumber = $prefix . $index;
         if ($part->type == 0) {
             if ($part->subtype == 'PLAIN') {
                 $this->bodyPlain .= $this->getPart($partNumber, $part->encoding);
             } else {
                 $this->bodyHTML .= $this->getPart($partNumber, $part->encoding);
             }
         } elseif ($part->type == 2) {
             $msg = new self($this->conn, $this->messageNumber);
             $msg->getAttachments = $this->getAttachments;
             $msg->recurse($part->parts, $partNumber . '.', 0, false);
             $this->attachments[] = array('type' => $part->type, 'subtype' => $part->subtype, 'filename' => '', 'data' => $msg, 'inline' => false);
         } elseif (isset($part->parts)) {
             if ($fullPrefix) {
                 $this->recurse($part->parts, $prefix . $index . '.');
             } else {
                 $this->recurse($part->parts, $prefix);
             }
         } elseif ($part->type > 2) {
             if (isset($part->id)) {
                 $id = str_replace(array('<', '>'), '', $part->id);
                 $this->attachments[$id] = array('type' => $part->type, 'subtype' => $part->subtype, 'filename' => $this->getFilenameFromPart($part), 'data' => $this->getAttachments ? $this->getPart($partNumber, $part->encoding) : '', 'inline' => true);
             } else {
                 $this->attachments[] = array('type' => $part->type, 'subtype' => $part->subtype, 'filename' => $this->getFilenameFromPart($part), 'data' => $this->getAttachments ? $this->getPart($partNumber, $part->encoding) : '', 'inline' => false);
             }
         }
         $index++;
     }
     return $this->attachments;
 }