From a9035b15612e90f549082561ab9664c2fda7f23b Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Sat, 18 Jul 2015 10:19:34 -0400
Subject: [PATCH] Fix so *-request@ addresses in Sender: header are also ignored on reply-all (#1490452)

---
 program/steps/mail/compose.inc |   24 ++++++++++++++++--------
 1 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 5009c52..326b817 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -332,12 +332,17 @@
             else if (!empty($MESSAGE->headers->from))
                 $fvalue = $MESSAGE->headers->from;
 
-            // Reply to message sent by yourself (#1487074, #1489230)
+            // Reply to message sent by yourself (#1487074, #1489230, #1490439)
             // Reply-To address need to be unset (#1490233)
-            if (!empty($ident) && empty($replyto)
-                && in_array($ident['ident'], array($fvalue, $MESSAGE->headers->from))
-            ) {
-                $fvalue = $MESSAGE->headers->to;
+            if (!empty($ident) && empty($replyto)) {
+                foreach (array($fvalue, $MESSAGE->headers->from) as $sender) {
+                    $senders = rcube_mime::decode_address_list($sender, null, false, $charset, true);
+
+                    if (in_array($ident['email_ascii'], $senders)) {
+                        $fvalue = $MESSAGE->headers->to;
+                        break;
+                    }
+                }
             }
         }
         // add recipient of original message if reply to all
@@ -347,8 +352,12 @@
             if ($v = $MESSAGE->headers->cc)
                 $fvalue .= (!empty($fvalue) ? $separator : '') . $v;
             // Use Sender header (#1489011)
-            if (($v = $MESSAGE->headers->get('Sender', false)) && strpos($v, '-bounces@') === false)
-                $fvalue .= (!empty($fvalue) ? $separator : '') . $v;
+            if ($v = $MESSAGE->headers->get('Sender', false)) {
+                // Skip common mailing lists addresses: *-bounces@ and *-request@ (#1490452)
+                if (empty($MESSAGE->headers->others['list-post']) || !preg_match('/-(bounces|request)@/', $v)) {
+                    $fvalue .= (!empty($fvalue) ? $separator : '') . $v;
+                }
+            }
 
             // When To: and Reply-To: are the same we add From: address to the list (#1489037)
             if ($v = $MESSAGE->headers->from) {
@@ -672,7 +681,6 @@
 
     return $out;
 }
-
 
 function rcmail_compose_editor_mode()
 {

--
Gitblit v1.9.1