예제 #1
0
 /**
  * Format and fix headers
  *
  * mail() uses its $to and $subject arguments to set the To: and Subject:
  * headers, respectively. This method strips those out as a sanity check to
  * prevent duplicate header entries.
  *
  * @access  protected
  * @param   array $headers
  * @return  void
  * @throws  Zend_Mail_Transport_Exception
  */
 protected function _prepareHeaders($headers)
 {
     if (!$this->_mail) {
         /**
          * @see Zend_Mail_Transport_Exception
          */
         require_once 'vendor/Zend/Mail/Transport/Exception.php';
         throw new Zend_Mail_Transport_Exception('_prepareHeaders requires a registered Zend_Mail object');
     }
     // mail() uses its $to parameter to set the To: header, and the $subject
     // parameter to set the Subject: header. We need to strip them out.
     if (0 === strpos(PHP_OS, 'WIN')) {
         // If the current recipients list is empty, throw an error
         if (empty($this->recipients)) {
             /**
              * @see Zend_Mail_Transport_Exception
              */
             require_once 'vendor/Zend/Mail/Transport/Exception.php';
             throw new Zend_Mail_Transport_Exception('Missing To addresses');
         }
     } else {
         // All others, simply grab the recipients and unset the To: header
         if (!isset($headers['To'])) {
             /**
              * @see Zend_Mail_Transport_Exception
              */
             require_once 'vendor/Zend/Mail/Transport/Exception.php';
             throw new Zend_Mail_Transport_Exception('Missing To header');
         }
         unset($headers['To']['append']);
         $this->recipients = implode(',', $headers['To']);
     }
     // Remove recipient header
     unset($headers['To']);
     // Remove subject header, if present
     if (isset($headers['Subject'])) {
         unset($headers['Subject']);
     }
     // Prepare headers
     parent::_prepareHeaders($headers);
     // Fix issue with empty blank line ontop when using Sendmail Trnasport
     $this->header = rtrim($this->header);
 }
예제 #2
0
 /**
  * Format and fix headers
  *
  * Some SMTP servers do not strip BCC headers. Most clients do it themselves as do we.
  *
  * @access  protected
  * @param   array $headers
  * @return  void
  * @throws  Zend_Transport_Exception
  */
 protected function _prepareHeaders($headers)
 {
     if (!$this->_mail) {
         /**
          * @see Exception
          */
         require_once 'Zend/Mail/Transport/Exception.php';
         throw new Exception('_prepareHeaders requires a registered Zend_Mail object');
     }
     unset($headers['Bcc']);
     // Prepare headers
     parent::_prepareHeaders($headers);
 }
예제 #3
0
 /**
  * Format and fix headers
  *
  * mail() uses its $to and $subject arguments to set the To: and Subject:
  * headers, respectively. This method strips those out as a sanity check to
  * prevent duplicate header entries.
  * 
  * @access protected
  * @param array $headers 
  * @return void
  */
 protected function _prepareHeaders($headers)
 {
     if (!$this->_mail) {
         throw new Zend_Mail_Transport_Exception('_prepareHeaders requires a registered Zend_Mail object');
     }
     // mail() uses its $to parameter to set the To: header, and the $subject
     // parameter to set the Subject: header. We need to strip them out.
     if (0 === strpos(PHP_OS, 'WIN')) {
         // If the current recipients list is empty, throw an error
         if (empty($this->recipients)) {
             throw new Zend_Mail_Transport_Exception('Missing To addresses');
         }
     } else {
         // All others, simply grab the recipients and unset the To: header
         if (!isset($headers['To'])) {
             throw new Zend_Mail_Transport_Exception('Missing To header');
         }
         unset($headers['To']['append']);
         $this->recipients = implode(',', $headers['To']);
     }
     // Remove subject header, if present
     if (isset($headers['Subject'])) {
         unset($headers['Subject']);
     }
     // Prepare headers
     parent::_prepareHeaders($headers);
 }
예제 #4
0
파일: Smtp.php 프로젝트: kobmaki/icingaweb2
 /**
  * Format and fix headers
  *
  * Some SMTP servers do not strip BCC headers. Most clients do it themselves as do we.
  *
  * @access  protected
  * @param   array $headers
  * @return  void
  * @throws  Zend_Transport_Exception
  */
 protected function _prepareHeaders($headers)
 {
     if (!$this->_mail) {
         /**
          * @see Zend_Mail_Transport_Exception
          */
         throw new Zend_Mail_Transport_Exception('_prepareHeaders requires a registered Zend_Mail object');
     }
     unset($headers['Bcc']);
     // Prepare headers
     parent::_prepareHeaders($headers);
 }
예제 #5
0
 /**
  * Send message to transport from queue
  * @param array $row as retreived from database
  */
 public function _sendSavedMessage(array &$row)
 {
     try {
         $ret = $this->transport->sendFromSaved($row['from'], $row['recipients'], $row['body'], unserialize($row['headers']), $row['subject']);
         $row['sent'] = Am_Di::getInstance()->time;
         Am_Di::getInstance()->db->query("UPDATE ?_mail_queue SET sent=?d WHERE queue_id=?d", $row['sent'], $row['queue_id']);
     } catch (Zend_Mail_Exception $e) {
         Am_Di::getInstance()->errorLogTable->logException($e);
         $row['failures']++;
         if ($row['failures'] >= 3) {
             //// deleting message on 3-rd failure
             Am_Di::getInstance()->db->query("DELETE FROM ?_mail_queue \n                    WHERE queue_id=?d", $row['queue_id']);
         } else {
             // save failure
             Am_Di::getInstance()->db->query("UPDATE ?_mail_queue \n                    SET failures=failures+1, last_error=?\n                    WHERE queue_id=?d", $e->getMessage(), $row['queue_id']);
         }
     }
 }