From 2f2f15b7aabe19e45dad9bddb7eb7f4394aa1e21 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Mon, 04 Sep 2006 08:26:30 -0400
Subject: [PATCH] Little improvements for message parsing and encoding

---
 program/include/rcube_smtp.inc |   27 +++++++++++++++------------
 1 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/program/include/rcube_smtp.inc b/program/include/rcube_smtp.inc
index e4aea09..3108675 100644
--- a/program/include/rcube_smtp.inc
+++ b/program/include/rcube_smtp.inc
@@ -49,7 +49,7 @@
  * @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;
@@ -72,7 +72,8 @@
   // create Net_SMTP object and connect to server
   if (!is_object($smtp_conn))
     {
-    $SMTP_CONN = new Net_SMTP($smtp_host, $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)
@@ -80,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 = empty($CONFIG['smtp_auth_type']) ? NULL : $CONFIG['smtp_auth_type'];
-	  	
-      if (PEAR::isError($SMTP_CONN->auth($smtp_user, $smtp_pass, $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