diff options
| author | Aurélien Bompard | 2015-11-20 08:17:36 +0100 |
|---|---|---|
| committer | Barry Warsaw | 2016-11-28 20:31:09 -0500 |
| commit | f977a1a815460042baeb9704bc25c8a8e75652a4 (patch) | |
| tree | 5b75724d9f302d8da96a9a59001d357939b7b9bd | |
| parent | 6a96948af68f0558263d46ac782de8aec5b8be1f (diff) | |
| download | mailman-f977a1a815460042baeb9704bc25c8a8e75652a4.tar.gz mailman-f977a1a815460042baeb9704bc25c8a8e75652a4.tar.zst mailman-f977a1a815460042baeb9704bc25c8a8e75652a4.zip | |
| -rw-r--r-- | src/mailman/email/message.py | 7 | ||||
| -rw-r--r-- | src/mailman/email/tests/test_message.py | 10 |
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"]) |
