forked from python/cpython
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
bpo-37482: Fix email address name with encoded words and special chars (
pythonGH-14561) Special characters in email address header display names are normally put within double quotes. However, encoded words (=?charset?x?...?=) are not allowed withing double quotes. When the header contains a word with special characters and another word that must be encoded, the first one must also be encoded. In the next example, the display name in the From header is quoted and therefore the comma is allowed; in the To header, the comma is not within quotes and not encoded, which is not allowed and therefore rejected by some mail servers. From: "Foo Bar, France" <[email protected]> To: Foo Bar, =?utf-8?q?Espa=C3=B1a?= <[email protected]> https://bugs.python.org/issue37482 (cherry picked from commit df0c21f) Co-authored-by: bsiem <[email protected]>
- Loading branch information
1 parent
fb3d742
commit c5bba85
Showing
3 changed files
with
28 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1528,6 +1528,30 @@ def test_set_message_header_from_group(self): | |
|
||
class TestFolding(TestHeaderBase): | ||
|
||
def test_address_display_names(self): | ||
"""Test the folding and encoding of address headers.""" | ||
for name, result in ( | ||
('Foo Bar, France', '"Foo Bar, France"'), | ||
('Foo Bar (France)', '"Foo Bar (France)"'), | ||
('Foo Bar, España', 'Foo =?utf-8?q?Bar=2C_Espa=C3=B1a?='), | ||
('Foo Bar (España)', 'Foo Bar =?utf-8?b?KEVzcGHDsWEp?='), | ||
('Foo, Bar España', '=?utf-8?q?Foo=2C_Bar_Espa=C3=B1a?='), | ||
('Foo, Bar [España]', '=?utf-8?q?Foo=2C_Bar_=5BEspa=C3=B1a=5D?='), | ||
('Foo Bär, France', 'Foo =?utf-8?q?B=C3=A4r=2C?= France'), | ||
('Foo Bär <France>', 'Foo =?utf-8?q?B=C3=A4r_=3CFrance=3E?='), | ||
( | ||
'Lôrem ipsum dôlôr sit amet, cônsectetuer adipiscing. ' | ||
'Suspendisse pôtenti. Aliquam nibh. Suspendisse pôtenti.', | ||
'=?utf-8?q?L=C3=B4rem_ipsum_d=C3=B4l=C3=B4r_sit_amet=2C_c' | ||
'=C3=B4nsectetuer?=\n =?utf-8?q?adipiscing=2E_Suspendisse' | ||
'_p=C3=B4tenti=2E_Aliquam_nibh=2E?=\n Suspendisse =?utf-8' | ||
'?q?p=C3=B4tenti=2E?=', | ||
), | ||
): | ||
h = self.make_header('To', Address(name, addr_spec='[email protected]')) | ||
self.assertEqual(h.fold(policy=policy.default), | ||
'To: %s <[email protected]>\n' % result) | ||
|
||
def test_short_unstructured(self): | ||
h = self.make_header('subject', 'this is a test') | ||
self.assertEqual(h.fold(policy=policy.default), | ||
|
1 change: 1 addition & 0 deletions
1
Misc/NEWS.d/next/Library/2019-07-09-11-20-21.bpo-37482.auzvev.rst
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Fix serialization of display name in originator or destination address fields with both encoded words and special chars. |