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 EmailMessage($this->connection, $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++; } }