/** * create Tinebase_Mail from Zend_Mail_Message * * @param Zend_Mail_Message $_zmm * @param string $_replyBody * @return Tinebase_Mail */ public static function createFromZMM(Zend_Mail_Message $_zmm, $_replyBody = null) { $contentStream = fopen("php://temp", 'r+'); fputs($contentStream, $_zmm->getContent()); rewind($contentStream); $mp = new Zend_Mime_Part($contentStream); self::_getMetaDataFromZMM($_zmm, $mp); // append old body when no multipart/mixed if ($_replyBody !== null && $_zmm->headerExists('content-transfer-encoding')) { $mp = self::_appendReplyBody($mp, $_replyBody); } else { $mp->decodeContent(); if ($_zmm->headerExists('content-transfer-encoding')) { switch ($_zmm->getHeader('content-transfer-encoding')) { case Zend_Mime::ENCODING_BASE64: // BASE64 encode has a bug that swallows the last char(s) $bodyEncoding = Zend_Mime::ENCODING_7BIT; break; default: $bodyEncoding = $_zmm->getHeader('content-transfer-encoding'); } } else { $bodyEncoding = Zend_Mime::ENCODING_7BIT; } if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Using encoding: ' . $bodyEncoding); } $mp->encoding = $bodyEncoding; } $result = new Tinebase_Mail('utf-8'); $result->setBodyText($mp); $result->setHeadersFromZMM($_zmm); return $result; }