]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-27513: email.utils.getaddresses() now handles Header objects (#13797)
authorZackery Spytz <zspytz@gmail.com>
Mon, 19 Jul 2021 16:07:54 +0000 (09:07 -0700)
committerGitHub <noreply@github.com>
Mon, 19 Jul 2021 16:07:54 +0000 (18:07 +0200)
getaddresses() should be able to handle a Header object if passed
one.

Co-authored-by: Ɓukasz Langa <lukasz@langa.pl>
Lib/email/utils.py
Lib/test/test_email/test_email.py
Misc/NEWS.d/next/Library/2019-06-03-23-53-25.bpo-27513.qITN7d.rst [new file with mode: 0644]

index a8e46a761bf922e215929bf673ec94bf3a27fae8..cfdfeb3f1a86e4281186716dd73235fc65c391f0 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 eed60142b19e3bf9fc3e339c9073a2c860abedbe..0154bbad1f63f460b237c2e529b887f37bdeabc7 100644 (file)
@@ -3263,6 +3263,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):
diff --git a/Misc/NEWS.d/next/Library/2019-06-03-23-53-25.bpo-27513.qITN7d.rst b/Misc/NEWS.d/next/Library/2019-06-03-23-53-25.bpo-27513.qITN7d.rst
new file mode 100644 (file)
index 0000000..90d49bb
--- /dev/null
@@ -0,0 +1,3 @@
+:func:`email.utils.getaddresses` now accepts
+:class:`email.header.Header` objects along with string values.
+Patch by Zackery Spytz.