Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 35.2k
gh-144156: Fix email header folding concatenating encoded words#144692
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uh oh!
There was an error while loading. Please reload this page.
Changes from all commits
b5925e01a7824efb23a6e050491ced6f19791b4b3bd5f500115e6618902ec59a1cfe3c45022beccf399d0d694d6a433ab1File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -393,6 +393,50 @@ def test_defaults_handle_spaces_at_start_of_continuation_line(self): | ||
| g.flatten(msg) | ||
| self.assertEqual(s.getvalue(), expected) | ||
| # gh-144156: fold between non-encoded and encoded words don't need to encoded | ||
| # the separating space | ||
| def test_defaults_handle_spaces_at_start_of_continuation_line_2(self): | ||
| source = ("Re: [SOS-1495488] Commande et livraison - Demande de retour - " | ||
| "bibijolie - 251210-AABBCC - Abo actualités digitales 20 semaines " | ||
| "d’abonnement à 24 heures, Bilan, Tribune de Genève et tous les titres Tamedia") | ||
| expected = ( | ||
| b"Subject: " | ||
| b"Re: [SOS-1495488] Commande et livraison - Demande de retour -\n" | ||
| b" bibijolie - 251210-AABBCC - Abo =?utf-8?q?actualit=C3=A9s?= digitales 20\n" | ||
| b" semaines =?utf-8?q?d=E2=80=99abonnement_=C3=A0?= 24 heures, Bilan, Tribune de\n" | ||
| b" =?utf-8?q?Gen=C3=A8ve?= et tous les titres Tamedia\n\n" | ||
| ) | ||
| msg = EmailMessage() | ||
| msg['Subject'] = source | ||
| s = io.BytesIO() | ||
| g = BytesGenerator(s) | ||
| g.flatten(msg) | ||
| self.assertEqual(s.getvalue(), expected) | ||
robsdedude marked this conversation as resolved.
Uh oh!There was an error while loading. Please reload this page. | ||
| def test_ew_folding_round_trip_1(self): | ||
| print() | ||
| source = "aaaaaaaaa фффффффф " | ||
| msg = EmailMessage() | ||
| msg['Subject'] = source | ||
| s = io.BytesIO() | ||
| g = BytesGenerator(s, maxheaderlen=30) | ||
| g.flatten(msg) | ||
| flat = s.getvalue() | ||
| reparsed = message_from_bytes(flat, policy=policy.default)['Subject'] | ||
| self.assertMultiLineEqual(reparsed, source) | ||
| def test_ew_folding_round_trip_2(self): | ||
| print() | ||
| source = "aaa aaaaaaa aaa ффф фффф " | ||
| msg = EmailMessage() | ||
| msg['Subject'] = source | ||
| s = io.BytesIO() | ||
| g = BytesGenerator(s, maxheaderlen=30) | ||
| g.flatten(msg) | ||
| flat = s.getvalue() | ||
| reparsed = message_from_bytes(flat, policy=policy.default)['Subject'] | ||
| self.assertMultiLineEqual(reparsed, source) | ||
| def test_cte_type_7bit_handles_unknown_8bit(self): | ||
| source = ("Subject: Maintenant je vous présente mon " | ||
| "collègue\n\n").encode('utf-8') | ||
robsdedude marked this conversation as resolved.
Uh oh!There was an error while loading. Please reload this page. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| Fix the folding of headers by the :mod:`email` library when :rfc:`2047` encoded words are used. Now whitespace is correctly preserved and also correctly added between adjacent encoded words. The latter property was broken by the fix for gh-92081, which mostly fixed previous failures to preserve whitespace. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.