@@ -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() |