/** * * @return IfwPsn_Vendor_Zend_Mail_Transport_Abstract|null */ public function getMail() { if (null === $this->_transport) { $options = $this->getOptions(); foreach ($options as $key => $option) { $options[strtolower($key)] = $option; } $this->setOptions($options); if (isset($options['transport']) && !is_numeric($options['transport'])) { $this->_transport = $this->_setupTransport($options['transport']); if (!isset($options['transport']['register']) || $options['transport']['register'] == '1' || isset($options['transport']['register']) && !is_numeric($options['transport']['register']) && (bool) $options['transport']['register'] == true) { IfwPsn_Vendor_Zend_Mail::setDefaultTransport($this->_transport); } } $this->_setDefaults('from'); $this->_setDefaults('replyTo'); } return $this->_transport; }
/** * Sends mail to recipient(s) if log entries are present. Note that both * plaintext and HTML portions of email are handled here. * * @return void */ public function shutdown() { // If there are events to mail, use them as message body. Otherwise, // there is no mail to be sent. if (empty($this->_eventsToMail)) { return; } if ($this->_subjectPrependText !== null) { // Tack on the summary of entries per-priority to the subject // line and set it on the IfwPsn_Vendor_Zend_Mail object. $numEntries = $this->_getFormattedNumEntriesPerPriority(); $this->_mail->setSubject("{$this->_subjectPrependText} ({$numEntries})"); } // Always provide events to mail as plaintext. $this->_mail->setBodyText(implode('', $this->_eventsToMail)); // If a IfwPsn_Vendor_Zend_Layout instance is being used, set its "events" // value to the lines formatted for use with the layout. if ($this->_layout) { // Set the required "messages" value for the layout. Here we // are assuming that the layout is for use with HTML. $this->_layout->events = implode('', $this->_layoutEventsToMail); // If an exception occurs during rendering, convert it to a notice // so we can avoid an exception thrown without a stack frame. try { $this->_mail->setBodyHtml($this->_layout->render()); } catch (Exception $e) { trigger_error("exception occurred when rendering layout; " . "unable to set html body for message; " . "message = {$e->getMessage()}; " . "code = {$e->getCode()}; " . "exception class = " . get_class($e), E_USER_NOTICE); } } // Finally, send the mail. If an exception occurs, convert it into a // warning-level message so we can avoid an exception thrown without a // stack frame. try { $this->_mail->send(); } catch (Exception $e) { trigger_error("unable to send log entries via email; " . "message = {$e->getMessage()}; " . "code = {$e->getCode()}; " . "exception class = " . get_class($e), E_USER_WARNING); } }