summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mailman/email/message.py7
-rw-r--r--src/mailman/email/tests/test_message.py10
2 files changed, 14 insertions, 3 deletions
diff --git a/src/mailman/email/message.py b/src/mailman/email/message.py
index ebfef9d9b..26bc35b78 100644
--- a/src/mailman/email/message.py
+++ b/src/mailman/email/message.py
@@ -93,9 +93,10 @@ class Message(email.message.Message):
if envelope_sender is not None
else '')
else:
- field_values = self.get_all(header, [])
- senders.extend(address.lower() for (display_name, address)
- in email.utils.getaddresses(field_values))
+ for field_value in self.get_all(header, []):
+ # Convert the header to str in case it's a Header instance.
+ name, address = email.utils.parseaddr(str(field_value))
+ senders.append(address.lower())
# Filter out None and the empty string, and convert to unicode.
clean_senders = []
for sender in senders:
diff --git a/src/mailman/email/tests/test_message.py b/src/mailman/email/tests/test_message.py
index 3ec099904..c23d37f7f 100644
--- a/src/mailman/email/tests/test_message.py
+++ b/src/mailman/email/tests/test_message.py
@@ -19,6 +19,7 @@
import unittest
+from email.header import Header
from email.parser import FeedParser
from mailman.app.lifecycle import create_list
from mailman.email.message import Message, UserNotification
@@ -52,6 +53,9 @@ class TestMessage(unittest.TestCase):
class TestMessageSubclass(unittest.TestCase):
+
+ layer = ConfigLayer
+
def test_i18n_filenames(self):
parser = FeedParser(_factory=Message)
parser.feed("""\
@@ -79,3 +83,9 @@ Test content
except TypeError as error:
self.fail(error)
self.assertEqual(filename, u'd\xe9jeuner.txt')
+
+ def test_senders_header_instances(self):
+ msg = Message()
+ msg['From'] = Header('test@example.com')
+ # Make sure the senders property does not fail
+ self.assertEqual(msg.senders, ["test@example.com"])