X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=program%2Finclude%2Frcube_smtp.php;h=8c668c0a4b03fb46f1a08d57051ba7783f262f96;hb=76507f7c63a660742e76889ad6e3919f3dde3bb0;hp=e795bc48f33197d779bb92520e29eb13fb31d07c;hpb=315a64971ff1249e4d5884f309fab5ddbfe55cc6;p=roundcube.git diff --git a/program/include/rcube_smtp.php b/program/include/rcube_smtp.php index e795bc4..8c668c0 100644 --- a/program/include/rcube_smtp.php +++ b/program/include/rcube_smtp.php @@ -5,7 +5,7 @@ | program/include/rcube_smtp.php | | | | This file is part of the Roundcube Webmail client | - | Copyright (C) 2005-2010, Roundcube Dev. - Switzerland | + | Copyright (C) 2005-2010, The Roundcube Dev Team | | Licensed under the GNU GPL | | | | PURPOSE: | @@ -15,7 +15,7 @@ | Author: Thomas Bruederli | +-----------------------------------------------------------------------+ - $Id: rcube_smtp.php 4509 2011-02-09 10:51:50Z thomasb $ + $Id: rcube_smtp.php 5499 2011-11-28 09:03:27Z alec $ */ @@ -105,7 +105,7 @@ class rcube_smtp $this->conn = new Net_SMTP($smtp_host, $smtp_port, $helo_host); - if($RCMAIL->config->get('smtp_debug')) + if ($RCMAIL->config->get('smtp_debug')) $this->conn->setDebug(true, array($this, 'debug_handler')); // try to connect to server and exit on failure @@ -118,6 +118,13 @@ class rcube_smtp return false; } + // workaround for timeout bug in Net_SMTP 1.5.[0-1] (#1487843) + if (method_exists($this->conn, 'setTimeout') + && ($timeout = ini_get('default_socket_timeout')) + ) { + $this->conn->setTimeout($timeout); + } + $smtp_user = str_replace('%u', $_SESSION['username'], $CONFIG['smtp_user']); $smtp_pass = str_replace('%p', $RCMAIL->decrypt($_SESSION['password']), $CONFIG['smtp_pass']); $smtp_auth_type = empty($CONFIG['smtp_auth_type']) ? NULL : $CONFIG['smtp_auth_type']; @@ -207,14 +214,10 @@ class rcube_smtp if ($opts['dsn']) { $exts = $this->conn->getServiceExtensions(); - if (!isset($exts['DSN'])) { - $this->error = array('label' => 'smtpdsnerror'); - $this->response[] = "DSN not supported"; - return false; + if (isset($exts['DSN'])) { + $from_params = 'RET=HDRS'; + $recipient_params = 'NOTIFY=SUCCESS,FAILURE'; } - - $from_params = 'RET=HDRS'; - $recipient_params = 'NOTIFY=SUCCESS,FAILURE'; } // RFC2298.3: remove envelope sender address @@ -378,7 +381,7 @@ class rcube_smtp $from = $addresses[0]; // Reject envelope From: addresses with spaces. - if (strstr($from, ' ')) + if (strpos($from, ' ') !== false) return false; $lines[] = $key . ': ' . $value; @@ -432,14 +435,14 @@ class rcube_smtp // if we're passed an array, assume addresses are valid and implode them before parsing. if (is_array($recipients)) $recipients = implode(', ', $recipients); - + $addresses = array(); $recipients = rcube_explode_quoted_string(',', $recipients); reset($recipients); while (list($k, $recipient) = each($recipients)) { - $a = explode(" ", $recipient); + $a = rcube_explode_quoted_string(' ', $recipient); while (list($k2, $word) = each($a)) { if (strpos($word, "@") > 0 && $word[strlen($word)-1] != '"') @@ -450,6 +453,7 @@ class rcube_smtp } } } + return $addresses; }