/** * Send the reading confirmation in a message who has the correct header and is not seen yet * * @return void */ public function sendReadingConfirmation() { if (!is_array($this->headers)) { $this->headers = Felamimail_Controller_Message::getInstance()->getMessageHeaders($this->getId(), NULL, TRUE); } if ((isset($this->headers['disposition-notification-to']) || array_key_exists('disposition-notification-to', $this->headers)) && $this->headers['disposition-notification-to']) { $translate = Tinebase_Translation::getTranslation($this->_application); $from = Felamimail_Controller_Account::getInstance()->get($this->account_id); $message = new Felamimail_Model_Message(); $message->account_id = $this->account_id; $punycodeConverter = Felamimail_Controller_Message::getInstance()->getPunycodeConverter(); $to = Felamimail_Message::convertAddresses($this->headers['disposition-notification-to'], $punycodeConverter); if (empty($to)) { throw new Felamimail_Exception('disposition-notification-to header does not contain a valid email address'); } $message->content_type = Felamimail_Model_Message::CONTENT_TYPE_HTML; $message->to = $to[0]['email']; $message->subject = $translate->_('Reading Confirmation:') . ' ' . $this->subject; $message->body = $translate->_('Your message:') . ' ' . $this->subject . "\n" . $translate->_('Received on') . ' ' . $this->received . "\n" . $translate->_('Was read by:') . ' ' . $from->from . ' <' . $from->email . '> ' . $translate->_('on') . ' ' . date('Y-m-d H:i:s'); $message->body = Tinebase_Mail::convertFromTextToHTML($message->body, 'felamimail-body-blockquote'); Felamimail_Controller_Message_Send::getInstance()->sendMessage($message); } }
/** * convert between content types (text/plain => text/html for example) * * @param string $_from * @param string $_to * @param string $_text * @param string $_eol * @param boolean $_addMarkup * @return string * * @todo we should use Felamimail_Model_Message::getPlainTextBody here / move all conversion to one place * @todo remove addHtmlMarkup? */ public static function convertContentType($_from, $_to, $_text) { // nothing todo if ($_from == $_to) { return $_text; } if ($_from == Zend_Mime::TYPE_TEXT && $_to == Zend_Mime::TYPE_HTML) { $text = Tinebase_Mail::convertFromTextToHTML($_text, 'felamimail-body-blockquote'); $text = self::addHtmlMarkup($text); } else { $text = self::convertFromHTMLToText($_text); } return $text; }
/** * get vacation message defined by template / do substitutions for dates and representative * * @param array $vacationData * @return array */ public function getVacationMessage($vacationData) { $record = new Felamimail_Model_Sieve_Vacation(array(), TRUE); $record->setFromJsonInUsersTimezone($vacationData); $message = Felamimail_Controller_Sieve::getInstance()->getVacationMessage($record); $htmlMessage = Tinebase_Mail::convertFromTextToHTML($message, 'felamimail-body-blockquote'); return array('message' => $htmlMessage); }
/** * test conversion from plain text to html (quotes ('> > ...') to blockquotes) * * @see 0005334: convert plain text quoting ("> ") to html blockquotes */ public function testTextToHtml() { $plaintextMessage = "blabla\n" . "> lalülüüla\n" . "> \n" . "> > >lala\n" . "> >\n" . "> > xyz\n" . "\n\n" . "> jojo\n" . "jojo\n"; $result = Tinebase_Mail::convertFromTextToHTML($plaintextMessage, 'felamimail-body-blockquote'); $this->assertEquals('blabla<br /><blockquote class="felamimail-body-blockquote">lalülüüla<br /><br />' . '<blockquote class="felamimail-body-blockquote"><blockquote class="felamimail-body-blockquote">lala<br />' . '</blockquote><br />xyz<br /></blockquote></blockquote><br /><br /><blockquote class="felamimail-body-blockquote">jojo<br /></blockquote>jojo<br />', $result); }