48 define(
'PEAR_MAIL_SMTP_ERROR_CREATE', 10000);
51 define(
'PEAR_MAIL_SMTP_ERROR_CONNECT', 10001);
54 define(
'PEAR_MAIL_SMTP_ERROR_AUTH', 10002);
57 define(
'PEAR_MAIL_SMTP_ERROR_FROM', 10003);
60 define(
'PEAR_MAIL_SMTP_ERROR_SENDER', 10004);
63 define(
'PEAR_MAIL_SMTP_ERROR_RECIPIENT', 10005);
66 define(
'PEAR_MAIL_SMTP_ERROR_DATA', 10006);
193 if (isset($params[
'host'])) $this->host = $params[
'host'];
194 if (isset($params[
'port'])) $this->port = $params[
'port'];
195 if (isset($params[
'auth'])) $this->auth = $params[
'auth'];
196 if (isset($params[
'username'])) $this->username = $params[
'username'];
197 if (isset($params[
'password'])) $this->password = $params[
'password'];
198 if (isset($params[
'localhost'])) $this->localhost = $params[
'localhost'];
199 if (isset($params[
'timeout'])) $this->timeout = $params[
'timeout'];
200 if (isset($params[
'debug'])) $this->debug = (bool)$params[
'debug'];
201 if (isset($params[
'persist'])) $this->persist = (
bool)$params[
'persist'];
202 if (isset($params[
'pipelining'])) $this->pipelining = (
bool)$params[
'pipelining'];
205 if (isset($params[
'verp'])) {
209 register_shutdown_function(array(&$this,
'_Mail_smtp'));
245 function send($recipients, $headers, $body)
253 if (!is_array($headers)) {
260 if (is_a($headerElements,
'PEAR_Error')) {
261 $this->_smtp->rset();
262 return $headerElements;
264 list($from, $textHeaders) = $headerElements;
269 if (!empty($headers[
'Return-Path'])) {
270 $from = $headers[
'Return-Path'];
274 $this->_smtp->rset();
280 if (!empty($this->_extparams)) {
281 foreach ($this->_extparams as $key => $val) {
282 $params .=
' ' . $key . (is_null($val) ?
'' :
'=' . $val);
286 $error = $this->
_error(
"Failed to set sender: $from",
$res);
287 $this->_smtp->rset();
292 if (is_a($recipients,
'PEAR_Error')) {
293 $this->_smtp->rset();
297 foreach ($recipients as $recipient) {
298 $res = $this->_smtp->rcptTo($recipient);
299 if (is_a(
$res,
'PEAR_Error')) {
300 $error = $this->
_error(
"Failed to add recipient: $recipient",
$res);
301 $this->_smtp->rset();
307 $res = $this->_smtp->data($textHeaders .
"\r\n\r\n" . $body);
308 list(,$args) = $this->_smtp->getResponse();
310 if (preg_match(
"/Ok: queued as (.*)/", $args, $queued)) {
311 $this->queued_as = $queued[1];
316 $this->greeting = $this->_smtp->getGreeting();
318 if (is_a(
$res,
'PEAR_Error')) {
319 $error = $this->
_error(
'Failed to send data',
$res);
320 $this->_smtp->rset();
325 if ($this->persist ===
false) {
344 if (is_object($this->_smtp) !==
false) {
348 include_once
'Net/SMTP.php';
349 $this->_smtp = &
new Net_SMTP($this->host,
354 if (is_object($this->_smtp) ===
false) {
361 $this->_smtp->setDebug(
true);
366 $error = $this->
_error(
'Failed to connect to ' .
367 $this->host .
':' . $this->port,
374 $method = is_string($this->auth) ? $this->auth :
'';
379 $error = $this->
_error(
"$method authentication failure",
381 $this->_smtp->rset();
400 $this->_extparams[$keyword] = $value;
414 if (is_object($this->_smtp) && $this->_smtp->disconnect()) {
419 return ($this->_smtp === null);
436 list($code, $response) = $this->_smtp->getResponse();
440 .
' [SMTP: ' . $error->getMessage()
441 .
" (code: $code, response: $response)]";