* @category Horde * @copyright 2013-2014 Horde LLC * @license http://www.horde.org/licenses/bsd New BSD License * @package Mail */ class Horde_Mail_Transport_Smtphorde extends Horde_Mail_Transport { /** * Send the message as 8bit? * * @var boolean */ public $send8bit = false; /** * SMTP object. * * @var Horde_Smtp */ protected $_smtp = null; /** * Constructor. * * @param array $params Additional parameters: * */ public function __construct(array $params = array()) { $this->_params = $params; /* SMTP requires CRLF line endings. */ $this->sep = "\r\n"; } /** */ public function send($recipients, array $headers, $body) { /* If we don't already have an SMTP object, create one. */ $this->getSMTPObject(); $headers = $this->_sanitizeHeaders($headers); list($from, $textHeaders) = $this->prepareHeaders($headers); $from = $this->_getFrom($from, $headers); $combine = Horde_Stream_Wrapper_Combine::getStream(array( rtrim($textHeaders, $this->sep), $this->sep . $this->sep, $body )); try { $this->_smtp->send($from, $recipients, $combine, array( '8bit' => $this->send8bit )); } catch (Horde_Smtp_Exception $e) { throw new Horde_Mail_Exception($e); } } /** * Connect to the SMTP server by instantiating a Horde_Smtp object. * * @return Horde_Smtp The SMTP object. * @throws Horde_Mail_Exception */ public function getSMTPObject() { if (!$this->_smtp) { $this->_smtp = new Horde_Smtp($this->_params); try { $this->_smtp->login(); } catch (Horde_Smtp_Exception $e) { throw new Horde_Mail_Exception($e); } } return $this->_smtp; } }