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