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 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)