bpo-27513: email.utils.getaddresses() now handles Header objects (GH-13797) (#27245)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 19 Jul 2021 17:28:56 +0000 (10:28 -0700)
committerAdrian Bunk <bunk@debian.org>
Sun, 1 Dec 2024 12:12:57 +0000 (14:12 +0200)
getaddresses() should be able to handle a Header object if passed
one.

Co-authored-by: Ɓukasz Langa <lukasz@langa.pl>
(cherry picked from commit 89f4c34797de2f0e5045da2b97c1c8cbbb42fbb2)

Co-authored-by: Zackery Spytz <zspytz@gmail.com>
Gbp-Pq: Name 0014-bpo-27513-email.utils.getaddresses-now-handles-Heade.patch

Lib/email/utils.py
Lib/test/test_email/test_email.py

index 1a7719dbc4898fc328a9b8e792d1d4a603783f77..48d30160aa6ea01d41bde0df60815fa52bd2ffa2 100644 (file)
@@ -109,7 +109,7 @@ def formataddr(pair, charset='utf-8'):
 
 def getaddresses(fieldvalues):
     """Return a list of (REALNAME, EMAIL) for each fieldvalue."""
-    all = COMMASPACE.join(fieldvalues)
+    all = COMMASPACE.join(str(v) for v in fieldvalues)
     a = _AddressList(all)
     return a.addresslist
 
index ab68cdd8b5aed19ade09d347ad03565191ff40ed..0421055ccfde9d7227ffbfea8c01ace99f4cbc76 100644 (file)
@@ -3262,6 +3262,11 @@ Foo
         addrs = utils.getaddresses(['User ((nested comment)) <foo@bar.com>'])
         eq(addrs[0][1], 'foo@bar.com')
 
+    def test_getaddresses_header_obj(self):
+        """Test the handling of a Header object."""
+        addrs = utils.getaddresses([Header('Al Person <aperson@dom.ain>')])
+        self.assertEqual(addrs[0][1], 'aperson@dom.ain')
+
     def test_make_msgid_collisions(self):
         # Test make_msgid uniqueness, even with multiple threads
         class MsgidsThread(Thread):