Enabled user selection of address format when adding from address book during message...
[squirrelmail.git] / class / deliver / Deliver_SMTP.class.php
index 6461d77212a98858b90b55c78bcfb7e564be4674..431ad74cce9828fc327fcc85f96ed7e28a084086 100644 (file)
@@ -5,7 +5,7 @@
  *
  * SMTP delivery backend for the Deliver class.
  *
- * @copyright © 1999-2006 The SquirrelMail Project Team
+ * @copyright © 1999-2007 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
  * @package squirrelmail
@@ -82,6 +82,10 @@ class Deliver_SMTP extends Deliver {
             $content_type->type1 == 'report' &&
             isset($content_type->properties['report-type']) &&
             $content_type->properties['report-type']=='disposition-notification') {
+            // reinitialize the from object because otherwise the from header somehow
+            // is affected. This $from var is used for smtp command MAIL FROM which
+            // is not the same as what we put in the rfc822 header.
+            $from = new AddressStructure();
             $from->host = '';
             $from->mailbox = '';
         }
@@ -136,8 +140,8 @@ class Deliver_SMTP extends Deliver {
         // Read ehlo response
         $tmp = $this->parse_ehlo_response($stream);
         if ($this->errorCheck($tmp,$stream)) {
-            // fall back to HELO if EHLO is not supported
-            if ($this->dlv_ret_nr == '500') {
+            // fall back to HELO if EHLO is not supported (error 5xx)
+            if ($this->dlv_ret_nr{0} == '5') {
                 fputs($stream, "HELO $helohost\r\n");
                 $tmp = fgets($stream,1024);
                 if ($this->errorCheck($tmp,$stream)) {
@@ -152,7 +156,7 @@ class Deliver_SMTP extends Deliver {
          * Implementing SMTP STARTTLS (rfc2487) in php 5.1.0+
          * http://www.php.net/stream-socket-enable-crypto
          */
-        if ($use_smtp_tls == 2) {
+        if ($use_smtp_tls === 2) {
             if (function_exists('stream_socket_enable_crypto')) {
                 // don't try starting tls, when client thinks that it is already active
                 if ($this->tls_enabled) {
@@ -426,28 +430,30 @@ class Deliver_SMTP extends Deliver {
         if (!$pop_server) {
             $pop_server = 'localhost';
         }
-        $popConnection = fsockopen($pop_server, $pop_port, $err_no, $err_str);
+        $popConnection = @fsockopen($pop_server, $pop_port, $err_no, $err_str);
         if (!$popConnection) {
             error_log("Error connecting to POP Server ($pop_server:$pop_port)"
                 . " $err_no : $err_str");
+            return false;
         } else {
             $tmp = fgets($popConnection, 1024); /* banner */
             if (substr($tmp, 0, 3) != '+OK') {
-                return(0);
+                return false;
             }
             fputs($popConnection, "USER $user\r\n");
             $tmp = fgets($popConnection, 1024);
             if (substr($tmp, 0, 3) != '+OK') {
-                return(0);
+                return false;
             }
             fputs($popConnection, 'PASS ' . $pass . "\r\n");
             $tmp = fgets($popConnection, 1024);
             if (substr($tmp, 0, 3) != '+OK') {
-                return(0);
+                return false;
             }
             fputs($popConnection, "QUIT\r\n"); /* log off */
             fclose($popConnection);
         }
+        return true;
     }
 
     /**
@@ -510,5 +516,3 @@ class Deliver_SMTP extends Deliver {
         return $ret;
     }
 }
-
-?>
\ No newline at end of file