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;

    }
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;

    }
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 ; }
Recursive function to get message parts

@param $messageParts
@param string $prefix
@param int $index
@param bool $fullPrefix
Recursive function to get message parts