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

Original file line numberDiff line numberDiff line change

@@ -4,6 +4,7 @@

44

from email import message_from_string, message_from_bytes

55

from email.message import EmailMessage

66

from email.generator import Generator, BytesGenerator

7+

from email.headerregistry import Address

78

from email import policy

89

from test.test_email import TestEmailBase, parameterize

910

@@ -291,6 +292,27 @@ def test_smtputf8_policy(self):

291292

g.flatten(msg)

292293

self.assertEqual(s.getvalue(), expected)

293294
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+
294316
295317

if __name__ == '__main__':

296318

unittest.main()