bpo-34424: Handle different policy.linesep lengths correctly. (GH-8803) · python/cpython@c0abd0c (original) (raw)

Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@
4 4 from email import message_from_string, message_from_bytes
5 5 from email.message import EmailMessage
6 6 from email.generator import Generator, BytesGenerator
7 +from email.headerregistry import Address
7 8 from email import policy
8 9 from test.test_email import TestEmailBase, parameterize
9 10
@@ -291,6 +292,27 @@ def test_smtputf8_policy(self):
291 292 g.flatten(msg)
292 293 self.assertEqual(s.getvalue(), expected)
293 294
295 +def test_smtp_policy(self):
296 +msg = EmailMessage()
297 +msg["From"] = Address(addr_spec="foo@bar.com", display_name="Páolo")
298 +msg["To"] = Address(addr_spec="bar@foo.com", display_name="Dinsdale")
299 +msg["Subject"] = "Nudge nudge, wink, wink"
300 +msg.set_content("oh boy, know what I mean, know what I mean?")
301 +expected = textwrap.dedent("""\
302 + From: =?utf-8?q?P=C3=A1olo?= foo@bar.com
303 + To: Dinsdale bar@foo.com
304 + Subject: Nudge nudge, wink, wink
305 + Content-Type: text/plain; charset="utf-8"
306 + Content-Transfer-Encoding: 7bit
307 + MIME-Version: 1.0
308 +
309 + oh boy, know what I mean, know what I mean?
310 + """).encode().replace(b"\n", b"\r\n")
311 +s = io.BytesIO()
312 +g = BytesGenerator(s, policy=policy.SMTP)
313 +g.flatten(msg)
314 +self.assertEqual(s.getvalue(), expected)
315 +
294 316
295 317 if __name__ == '__main__':
296 318 unittest.main()