From 6c76c91951d259f59b2b7a42b8fe895dcc0ef21b Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Wed, 23 Aug 2006 17:36:37 -0400 Subject: [PATCH] Updated Polish, Portuguese, Latvian, Chinese and Japanese localization --- program/include/rcube_smtp.inc | 43 ++++++++++++++++++++++++++++++------------- 1 files changed, 30 insertions(+), 13 deletions(-) diff --git a/program/include/rcube_smtp.inc b/program/include/rcube_smtp.inc index bc20463..3108675 100644 --- a/program/include/rcube_smtp.inc +++ b/program/include/rcube_smtp.inc @@ -49,16 +49,31 @@ * @return bool Returns TRUE on success, or FALSE on error * @access public */ -function smtp_mail($from, $recipients, $headers, $body) +function smtp_mail($from, $recipients, &$headers, &$body) { global $SMTP_CONN, $CONFIG, $SMTP_ERROR; $smtp_timeout = null; + $smtp_host = $CONFIG['smtp_server']; $smtp_port = is_numeric($CONFIG['smtp_port']) ? $CONFIG['smtp_port'] : 25; + $smtp_host_url = parse_url($CONFIG['smtp_server']); + // overwrite port + if ($smtp_host_url['host'] && $smtp_host_url['port']) + { + $smtp_host = $smtp_host_url['host']; + $smtp_port = $smtp_host_url['port']; + } + + // re-write smtp host + if ($smtp_host_url['host'] && $smtp_host_url['scheme']) + $smtp_host = sprintf('%s://%s', $smtp_host_url['scheme'], $smtp_host_url['host']); + + // create Net_SMTP object and connect to server if (!is_object($smtp_conn)) { - $SMTP_CONN = new Net_SMTP($CONFIG['smtp_server'], $smtp_port, 'localhost'); + $helo_host = !empty($_SERVER['server_name']) ? $_SERVER['server_name'] : 'localhost'; + $SMTP_CONN = new Net_SMTP($smtp_host, $smtp_port, $helo_host); // set debugging if ($CONFIG['debug_level'] & 8) @@ -66,32 +81,34 @@ // try to connect to server and exit on failure - if (PEAR::isError($SMTP_CONN->connect($smtp_timeout))) + $result = $SMTP_CONN->connect($smtp_timeout); + if (PEAR::isError($result)) { $SMTP_CONN = null; - $SMTP_ERROR .= "Connection failed\n"; + $SMTP_ERROR .= "Connection failed: ".$result->getMessage()."\n"; return FALSE; } // attempt to authenticate to the SMTP server if ($CONFIG['smtp_user'] && $CONFIG['smtp_pass']) { - if ($CONFIG['smtp_user'] == '%u') - $smtp_user = $_SESSION['username']; + if (strstr($CONFIG['smtp_user'], '%u')) + $smtp_user = str_replace('%u', $_SESSION['username'], $CONFIG['smtp_user']); else $smtp_user = $CONFIG['smtp_user']; - - if ($CONFIG['smtp_pass'] == '%p') - $smtp_pass = decrypt_passwd($_SESSION['password']); + + if (strstr($CONFIG['smtp_pass'], '%p')) + $smtp_pass = str_replace('%p', decrypt_passwd($_SESSION['password']), $CONFIG['smtp_pass']); else $smtp_pass = $CONFIG['smtp_pass']; - $smtp_auth_type = smpty($CONFIG['smtp_auth_type']) ? NULL : $CONFIG['smtp_auth_type']; - - if (PEAR::isError($SMTP_CONN->auth($smtp_user, $smtp_pass, $smtp_auth_type))) + $smtp_auth_type = empty($CONFIG['smtp_auth_type']) ? NULL : $CONFIG['smtp_auth_type']; + $result = $SMTP_CONN->auth($smtp_user, $smtp_pass, $smtp_auth_type); + + if (PEAR::isError($result)) { smtp_reset(); - $SMTP_ERROR .= "authentication failure\n"; + $SMTP_ERROR .= "Authentication failure: ".$result->getMessage()."\n"; return FALSE; } } -- Gitblit v1.9.1