gh-80361: Fix TypeError in email.Message.get_payload() (GH-117994)

It was raised when the charset is rfc2231 encoded, e.g.:

   Content-Type: text/plain; charset*=ansi-x3.4-1968''utf-8
This commit is contained in:
Serhiy Storchaka 2024-04-17 19:31:26 +03:00 committed by GitHub
parent c179c0e6cb
commit deaecb88fa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 18 additions and 1 deletions

View file

@ -4181,6 +4181,21 @@ class Test8BitBytesHandling(TestEmailBase):
self.assertEqual(msg.get_payload(decode=True),
'<,.V<W1A; á \n'.encode('utf-8'))
def test_rfc2231_charset_8bit_CTE(self):
m = textwrap.dedent("""\
From: foo@bar.com
To: baz
Mime-Version: 1.0
Content-Type: text/plain; charset*=ansi-x3.4-1968''utf-8
Content-Transfer-Encoding: 8bit
pöstal
""").encode('utf-8')
msg = email.message_from_bytes(m)
self.assertEqual(msg.get_payload(), "pöstal\n")
self.assertEqual(msg.get_payload(decode=True),
"pöstal\n".encode('utf-8'))
headertest_headers = (
('From: foo@bar.com', ('From', 'foo@bar.com')),