From 1a2f8375ded7563964ea24c44c7874a92e6f7b77 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Thu, 12 Aug 2010 03:11:28 -0400
Subject: [PATCH] - add message_part_structure hook also for text parts of mixed messages

---
 program/include/rcube_smtp.php |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/program/include/rcube_smtp.php b/program/include/rcube_smtp.php
index bdb87df..3c54d47 100644
--- a/program/include/rcube_smtp.php
+++ b/program/include/rcube_smtp.php
@@ -73,7 +73,7 @@
       'smtp_timeout'   => $RCMAIL->config->get('smtp_timeout'),
     ));
 
-    $smtp_host = str_replace('%h', $_SESSION['imap_host'], $CONFIG['smtp_server']);
+    $smtp_host = rcube_parse_host($CONFIG['smtp_server']);
     // when called from Installer it's possible to have empty $smtp_host here
     if (!$smtp_host) $smtp_host = 'localhost';
     $smtp_port = is_numeric($CONFIG['smtp_port']) ? $CONFIG['smtp_port'] : 25;
@@ -196,7 +196,9 @@
     // set From: address
     if (PEAR::isError($this->conn->mailFrom($from)))
     {
-      $this->error = array('label' => 'smtpfromerror', 'vars' => array('from' => $from, 'code' => $this->conn->_code));
+      $err = $this->conn->getResponse();
+      $this->error = array('label' => 'smtpfromerror', 'vars' => array(
+        'from' => $from, 'code' => $this->conn->_code, 'msg' => $err[1]));
       $this->response[] .= "Failed to set sender '$from'";
       $this->reset();
       return false;
@@ -215,7 +217,9 @@
     foreach ($recipients as $recipient)
     {
       if (PEAR::isError($this->conn->rcptTo($recipient))) {
-        $this->error = array('label' => 'smtptoerror', 'vars' => array('to' => $recipient, 'code' => $this->conn->_code));
+        $err = $this->conn->getResponse();
+        $this->error = array('label' => 'smtptoerror', 'vars' => array(
+          'to' => $recipient, 'code' => $this->conn->_code, 'msg' => $err[1]));
         $this->response[] .= "Failed to add recipient '$recipient'";
         $this->reset();
         return false;
@@ -242,7 +246,7 @@
     if (PEAR::isError($result = $this->conn->data($data, $text_headers)))
     {
       $err = $this->conn->getResponse();
-      if (count($err)>1 && $err[0] != 354 && $err[0] != 250)
+      if (!in_array($err[0], array(354, 250, 221)))
         $msg = sprintf('[%d] %s', $err[0], $err[1]);
       else
         $msg = $result->getMessage();

--
Gitblit v1.9.1