From 441ba2affdc01a257cdbc769d5aeb4e9c51647a4 Mon Sep 17 00:00:00 2001 From: Andrew Fyfe Date: Thu, 25 Jan 2018 17:38:00 +0000 Subject: [PATCH 1/2] getaddresses() expects a list --- modoboa/lib/email_utils.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modoboa/lib/email_utils.py b/modoboa/lib/email_utils.py index 67d2b7be3..b2d98a188 100644 --- a/modoboa/lib/email_utils.py +++ b/modoboa/lib/email_utils.py @@ -346,6 +346,8 @@ def prepare_addresses(addresses, usage="header"): :return: a string or a list depending on usage value """ result = [] + if isinstance(addresses, six.text_type): + addresses = [addresses] for name, address in getaddresses(addresses): if not address: continue From f94a1644edd46c3d56be8e360213583bcb8f0497 Mon Sep 17 00:00:00 2001 From: Andrew Fyfe Date: Thu, 25 Jan 2018 19:20:25 +0000 Subject: [PATCH 2/2] add test for passing a string to prepare_addresses() prepare_addresses() should convert this to a list. --- modoboa/lib/tests/test_email_utils.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/modoboa/lib/tests/test_email_utils.py b/modoboa/lib/tests/test_email_utils.py index 671fd6494..274279469 100644 --- a/modoboa/lib/tests/test_email_utils.py +++ b/modoboa/lib/tests/test_email_utils.py @@ -184,3 +184,20 @@ class EmailAddressParserTests(SimpleTestCase): ] output = prepare_addresses(value, usage="envelope") self.assertEqual(output, expected_output) + + def test_prepare_addresses_usage_envelope2(self): + """Check a list of e-mail addresses is sepearted correctly.""" + # value is one long string not 3 sepearte values, prepare_addresses + # should convert it to a list. + value = ( + "\"Doe, John\" ;" + "\"John Smith\" ," + "admin@sub.example.com" + ) + expected_output = [ + "doe.john@sub.example.com", + "john.smith@sub.example.com", + "admin@sub.example.com", + ] + output = prepare_addresses(value, usage="envelope") + self.assertEqual(output, expected_output)