/** * set mail body * * @param Expressomail_mail $_mail * @param Expressomail_Model_Message $_message */ protected function _setMailBody(Expressomail_mail $_mail, Expressomail_Model_Message $_message) { if ($_message->content_type == Expressomail_Model_Message::CONTENT_TYPE_HTML) { // checking embedded images $embeddedImages = $this->processEmbeddedImagesInHtmlBody($_message->body); // now checking embedded signature base64 image $base64Images = $this->processEmbeddedImageSignatureInHtmlBody($_message->body); //now checking embed images for reply/forward $embeddedImagesReply = $this->processEmbeddedImagesInHtmlBodyForReply($_message->body); $cid = array(); if (count($embeddedImagesReply) > 0) { foreach ($embeddedImagesReply as $index => $embeddedImage) { $cid[$index] = $_mail->createCid($embeddedImage['messageId']); $_message->body = str_replace($embeddedImage['match'], 'src="cid:' . $cid[$index] . '"', $_message->body); } } if (count($embeddedImages) > 0) { $_message->body = str_ireplace('src="index.php?method=Expressomail.showTempImage&tempImageId=', 'src="cid:', $_message->body); } if (count($base64Images) > 0) { // there should be only one image in the signature $signature_cid = $_mail->createCid($base64Images[0][1]); $_message->body = preg_replace('/<img id="?user-signature-image-?[0-9]*"? alt="?[^\\"]+"? src="data:image\\/jpeg;base64,[^"]+">/', '<img id="user-signature-image" src="cid:' . $signature_cid . '"/>', $_message->body); } $_mail->setBodyHtml(Expressomail_Message::addHtmlMarkup($_message->body)); if (count($embeddedImages) > 0) { foreach ($embeddedImages as $embeddedImage) { $file = Tinebase_Core::getTempDir() . '/' . $embeddedImage[1]; $image = file_get_contents($file); $_mail->createHtmlRelatedAttachment($image, $embeddedImage[1], 'image/jpg', Zend_Mime::DISPOSITION_INLINE, Zend_Mime::ENCODING_BASE64, $embeddedImage[0]); } } if (count($base64Images) > 0) { // again, there should be only one image in the signature $image = base64_decode($base64Images[0][1]); $_mail->createHtmlRelatedAttachment($image, $signature_cid, 'image/jpg', Zend_Mime::DISPOSITION_INLINE, Zend_Mime::ENCODING_BASE64, $base64Images[0][0]); } if (count($embeddedImagesReply) > 0) { foreach ($embeddedImagesReply as $index => $embeddedImage) { try { $part = Expressomail_Controller_Message::getInstance()->getMessagePart($embeddedImage['messageId'], $embeddedImage['messagePart']); $image = base64_decode(stream_get_contents($part->getRawStream())); $_mail->createHtmlRelatedAttachment($image, $cid[$index], $part->type, Zend_Mime::DISPOSITION_INLINE, Zend_Mime::ENCODING_BASE64, $part->filename); } catch (Exception $exc) { } } } if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) { Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . $_mail->getBodyHtml(TRUE)); } } $plainBodyText = $_message->getPlainTextBody(); $_mail->setBodyText($plainBodyText); if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) { Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . $_mail->getBodyText(TRUE)); } }