@@ -810,6 +810,16 @@ def test_unicode_body_defaults_to_utf8_encoding(self):
810810 w4kgdGVzdGFiYwo=
811811 """ ))
812812
813+ def test_string_payload_with_base64_cte (self ):
814+ msg = email .message_from_string (textwrap .dedent ("""\
815+ Content-Transfer-Encoding: base64
816+
817+ SGVsbG8uIFRlc3Rpbmc=
818+ """ ), policy = email .policy .default )
819+ self .assertEqual (msg .get_payload (decode = True ), b"Hello. Testing" )
820+ self .assertDefectsEqual (msg ['content-transfer-encoding' ].defects , [])
821+
822+
813823
814824# Test the email.encoders module
815825class TestEncoders (unittest .TestCase ):
@@ -2352,6 +2362,40 @@ def test_missing_header_body_separator(self):
23522362 self .assertDefectsEqual (msg .defects ,
23532363 [errors .MissingHeaderBodySeparatorDefect ])
23542364
2365+ def test_string_payload_with_extra_space_after_cte (self ):
2366+ # https://github.com/python/cpython/issues/98188
2367+ cte = "base64 "
2368+ msg = email .message_from_string (textwrap .dedent (f"""\
2369+ Content-Transfer-Encoding: { cte }
2370+
2371+ SGVsbG8uIFRlc3Rpbmc=
2372+ """ ), policy = email .policy .default )
2373+ self .assertEqual (msg .get_payload (decode = True ), b"Hello. Testing" )
2374+ self .assertDefectsEqual (msg ['content-transfer-encoding' ].defects , [])
2375+
2376+ def test_string_payload_with_extra_text_after_cte (self ):
2377+ msg = email .message_from_string (textwrap .dedent ("""\
2378+ Content-Transfer-Encoding: base64 some text
2379+
2380+ SGVsbG8uIFRlc3Rpbmc=
2381+ """ ), policy = email .policy .default )
2382+ self .assertEqual (msg .get_payload (decode = True ), b"Hello. Testing" )
2383+ cte = msg ['content-transfer-encoding' ]
2384+ self .assertDefectsEqual (cte .defects , [email .errors .InvalidHeaderDefect ])
2385+
2386+ def test_string_payload_with_extra_space_after_cte_compat32 (self ):
2387+ cte = "base64 "
2388+ msg = email .message_from_string (textwrap .dedent (f"""\
2389+ Content-Transfer-Encoding: { cte }
2390+
2391+ SGVsbG8uIFRlc3Rpbmc=
2392+ """ ), policy = email .policy .compat32 )
2393+ pasted_cte = msg ['content-transfer-encoding' ]
2394+ self .assertEqual (pasted_cte , cte )
2395+ self .assertEqual (msg .get_payload (decode = True ), b"Hello. Testing" )
2396+ self .assertDefectsEqual (msg .defects , [])
2397+
2398+
23552399
23562400# Test RFC 2047 header encoding and decoding
23572401class TestRFC2047 (TestEmailBase ):
0 commit comments