From fd51e0fea582da90f344bfb56ba797da1baa30f9 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 01 Oct 2008 10:57:43 -0400
Subject: [PATCH] - Better handling of "no identity" and "no email in identity" situations (#1485117)

---
 program/steps/mail/sendmail.inc |   20 +++++++++++++++-----
 1 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index d342124..4706af2 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -63,9 +63,10 @@
     $out = $sql_arr;
     $out['mailto'] = $sql_arr['email'];
     $name = strpos($sql_arr['name'], ",") ? '"'.$sql_arr['name'].'"' : $sql_arr['name'];
-    $out['string'] = sprintf('%s <%s>',
-                             rcube_charset_convert($name, RCMAIL_CHARSET, $OUTPUT->get_charset()),
-                             $sql_arr['email']);
+    $out['string'] = rcube_charset_convert($name, RCMAIL_CHARSET, $OUTPUT->get_charset());
+    if ($sql_arr['email'])
+      $out['string'] .= ' <' . $sql_arr['email'] . '>';
+
     return $out;
     }
 
@@ -160,8 +161,11 @@
   $mailto = 'undisclosed-recipients:;';
 
 // get sender name and address
-$identity_arr = rcmail_get_identity(get_input_value('_from', RCUBE_INPUT_POST));
-$from = $identity_arr['mailto'];
+$from = get_input_value('_from', RCUBE_INPUT_POST);
+$identity_arr = rcmail_get_identity($from);
+
+if ($identity_arr)
+  $from = $identity_arr['mailto'];
 
 if (empty($identity_arr['string']))
   $identity_arr['string'] = $from;
@@ -351,6 +355,12 @@
 // Begin SMTP Delivery Block 
 if (!$savedraft)
 {
+  // check for 'From' address (identity may be incomplete)
+  if ($identity_arr && !$identity_arr['mailto']) {
+    $OUTPUT->show_message('nofromaddress', 'error');
+    $OUTPUT->send('iframe'); 
+  }
+
   $sent = rcmail_deliver_message($MAIL_MIME, $from, $mailto);
   
   // return to compose page if sending failed

--
Gitblit v1.9.1