function fixCharsetAndAddSubParts(&$email, $part) { if (isset($part)) { $new_part = null; if (isset($part->ctype_parameters['charset'])) { $part->ctype_parameters['charset'] = 'UTF-8'; $new_part = addSubPart($email, $part); } else { $new_part = addSubPart($email, $part); } if (isset($part->parts)) { foreach ($part->parts as $subpart) { fixCharsetAndAddSubParts($new_part, $subpart); } } } }
/** * Add extra parts (not text; inlined or attached parts) to a mimepart object. * * @param Mail_mimePart $email reference to the object * @param array $parts array of parts * * @access private * @return void */ function addExtraSubParts(&$email, $parts) { if (isset($parts)) { foreach ($parts as $part) { $new_part = null; // Only if it's an attachment we will add the text parts, because all the inline/no disposition have been already added if (isset($part->disposition) && $part->disposition == "attachment") { printf("%s\n", sprintf("BackendIMAP->addExtraSubParts(): extraSubPart attachment found")); // it's an attachment $new_part = addSubPart($email, $part); } else { printf("%s\n", sprintf("BackendIMAP->addExtraSubParts(): extraSubPart no attachment found")); if (isset($part->ctype_primary) && $part->ctype_primary != "text" && $part->ctype_primary != "multipart") { printf("%s\n", sprintf("BackendIMAP->addExtraSubParts(): it's not a text part or a multipart")); // it's not a text part or a multipart $new_part = addSubPart($email, $part); } } if (isset($part->parts)) { printf("%s\n", sprintf("BackendIMAP->addExtraSubParts(): found subparts to my sub-part. Recursive calling")); // We add sub-parts to the new part, not to the main message addExtraSubParts($new_part === null ? $email : $new_part, $part->parts); } } } }