summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAurélien Bompard2015-11-20 08:17:36 +0100
committerBarry Warsaw2016-11-28 20:31:09 -0500
commitf977a1a815460042baeb9704bc25c8a8e75652a4 (patch)
tree5b75724d9f302d8da96a9a59001d357939b7b9bd
parent6a96948af68f0558263d46ac782de8aec5b8be1f (diff)
downloadmailman-f977a1a815460042baeb9704bc25c8a8e75652a4.tar.gz
mailman-f977a1a815460042baeb9704bc25c8a8e75652a4.tar.zst
mailman-f977a1a815460042baeb9704bc25c8a8e75652a4.zip
-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"])