/** * send one message through smtp * * @param Felamimail_Model_Message $_message * @return Felamimail_Model_Message * @throws Tinebase_Exception_SystemGeneric */ public function sendMessage(Felamimail_Model_Message $_message) { if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Sending message with subject ' . $_message->subject . ' to ' . print_r($_message->to, TRUE)); } if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) { Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . print_r($_message->toArray(), TRUE)); } // increase execution time (sending message with attachments can take a long time) $oldMaxExcecutionTime = Tinebase_Core::setExecutionLifeTime(300); // 5 minutes $account = Felamimail_Controller_Account::getInstance()->get($_message->account_id); try { $this->_resolveOriginalMessage($_message); $mail = $this->createMailForSending($_message, $account, $nonPrivateRecipients); $this->_sendMailViaTransport($mail, $account, $_message, true, $nonPrivateRecipients); } catch (Exception $e) { Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__ . ' Could not send message: ' . $e); $translation = Tinebase_Translation::getTranslation('Felamimail'); $message = sprintf($translation->_('Error: %s'), $e->getMessage()); $tesg = new Tinebase_Exception_SystemGeneric($message); $tesg->setTitle($translation->_('Could not send message')); throw $tesg; } // reset max execution time to old value Tinebase_Core::setExecutionLifeTime($oldMaxExcecutionTime); return $_message; }
/** * send one message through smtp * * @param Felamimail_Model_Message $_message * @return Felamimail_Model_Message */ public function sendMessage(Felamimail_Model_Message $_message) { if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Sending message with subject ' . $_message->subject . ' to ' . print_r($_message->to, TRUE)); } if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) { Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . print_r($_message->toArray(), TRUE)); } // increase execution time (sending message with attachments can take a long time) $oldMaxExcecutionTime = Tinebase_Core::setExecutionLifeTime(300); // 5 minutes $account = Felamimail_Controller_Account::getInstance()->get($_message->account_id); $this->_resolveOriginalMessage($_message); $mail = $this->createMailForSending($_message, $account, $nonPrivateRecipients); $this->_sendMailViaTransport($mail, $account, $_message, true, $nonPrivateRecipients); // reset max execution time to old value Tinebase_Core::setExecutionLifeTime($oldMaxExcecutionTime); return $_message; }
/** * save message in tinebase cache * - only cache message headers if received during the last day * * @param Felamimail_Model_Message $_message * @param Felamimail_Model_Folder $_folder * @param array $_messageData * * @todo do we need the headers in the Tinebase cache? */ protected function _saveMessageInTinebaseCache(Felamimail_Model_Message $_message, Felamimail_Model_Folder $_folder, $_messageData) { if (!$_message->received->isLater(Tinebase_DateTime::now()->subDay(3))) { return; } $memory = function_exists('memory_get_peak_usage') ? memory_get_peak_usage(true) : memory_get_usage(true); if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' caching message ' . $_message->getId() . ' / memory usage: ' . $memory / 1024 / 1024 . ' MBytes'); } if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) { Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . print_r($_message->toArray(), TRUE)); } $cacheId = 'getMessageHeaders' . $_message->getId(); Tinebase_Core::getCache()->save($_messageData['header'], $cacheId, array('getMessageHeaders')); // prefetch body to cache if (Felamimail_Config::getInstance()->get(Felamimail_Config::CACHE_EMAIL_BODY, TRUE) && $_message->size < $this->_maxMessageSizeToCacheBody) { $account = Felamimail_Controller_Account::getInstance()->get($_folder->account_id); $mimeType = $account->display_format == Felamimail_Model_Account::DISPLAY_HTML || $account->display_format == Felamimail_Model_Account::DISPLAY_CONTENT_TYPE ? Zend_Mime::TYPE_HTML : Zend_Mime::TYPE_TEXT; Felamimail_Controller_Message::getInstance()->getMessageBody($_message, null, $mimeType, $account); } }