summaryrefslogtreecommitdiff
path: root/program/include/rcube_smtp.inc
diff options
context:
space:
mode:
Diffstat (limited to 'program/include/rcube_smtp.inc')
-rw-r--r--program/include/rcube_smtp.inc23
1 files changed, 14 insertions, 9 deletions
diff --git a/program/include/rcube_smtp.inc b/program/include/rcube_smtp.inc
index b5bd183d8..066e5ed47 100644
--- a/program/include/rcube_smtp.inc
+++ b/program/include/rcube_smtp.inc
@@ -49,7 +49,7 @@ $SMTP_CONN = null;
*
* @return bool Returns TRUE on success, or FALSE on error
*/
-function smtp_mail($from, $recipients, &$headers, &$body, &$response)
+function smtp_mail($from, $recipients, &$headers, &$body, &$response, &$error)
{
global $SMTP_CONN, $RCMAIL;
@@ -96,8 +96,9 @@ function smtp_mail($from, $recipients, &$headers, &$body, &$response)
$result = $SMTP_CONN->connect($smtp_timeout);
if (PEAR::isError($result))
{
- $SMTP_CONN = null;
$response[] = "Connection failed: ".$result->getMessage();
+ $error = array('label' => 'smtpconnerror', 'vars' => array('code' => $SMTP_CONN->_code));
+ $SMTP_CONN = null;
return FALSE;
}
@@ -119,8 +120,9 @@ function smtp_mail($from, $recipients, &$headers, &$body, &$response)
if (PEAR::isError($result))
{
- smtp_reset();
+ $error = array('label' => 'smtpautherror', 'vars' => array('code' => $SMTP_CONN->_code));
$response[] .= 'Authentication failure: ' . $result->getMessage() . ' (Code: ' . $result->getCode() . ')';
+ smtp_reset();
return FALSE;
}
}
@@ -160,8 +162,9 @@ function smtp_mail($from, $recipients, &$headers, &$body, &$response)
// set From: address
if (PEAR::isError($SMTP_CONN->mailFrom($from)))
{
- smtp_reset();
+ $error = array('label' => 'smtpfromerror', 'vars' => array('from' => $from, 'code' => $SMTP_CONN->_code));
$response[] .= "Failed to set sender '$from'";
+ smtp_reset();
return FALSE;
}
@@ -170,6 +173,7 @@ function smtp_mail($from, $recipients, &$headers, &$body, &$response)
$recipients = smtp_parse_rfc822($recipients);
if (PEAR::isError($recipients))
{
+ $error = array('label' => 'smtprecipientserror');
smtp_reset();
return FALSE;
}
@@ -180,8 +184,9 @@ function smtp_mail($from, $recipients, &$headers, &$body, &$response)
{
if (PEAR::isError($SMTP_CONN->rcptTo($recipient)))
{
- smtp_reset();
+ $error = array('label' => 'smtptoerror', 'vars' => array('to' => $recipient, 'code' => $SMTP_CONN->_code));
$response[] .= "Failed to add recipient '$recipient'";
+ smtp_reset();
return FALSE;
}
}
@@ -197,10 +202,11 @@ function smtp_mail($from, $recipients, &$headers, &$body, &$response)
unset($text_headers, $body);
// Send the message's headers and the body as SMTP data.
- if (PEAR::isError($SMTP_CONN->data($data)))
+ if (PEAR::isError($result = $SMTP_CONN->data($data)))
{
- smtp_reset();
+ $error = array('label' => 'smtperror', 'vars' => array('msg' => $result->getMessage()));
$response[] .= "Failed to send data";
+ smtp_reset();
return FALSE;
}
@@ -218,7 +224,7 @@ function smtp_reset()
{
global $SMTP_CONN;
- if (is_object($SMTP_CONN))
+ if (is_object($SMTP_CONN) && is_resource($SMTP_CONN->_socket->fp))
{
$SMTP_CONN->rset();
smtp_disconnect();
@@ -226,7 +232,6 @@ function smtp_reset()
}
-
/**
* Disconnect the global SMTP connection and destroy object
* @access public