Fix parseaddr_unicode: take into account email only case

This commit is contained in:
Son NK 2020-04-05 12:56:17 +02:00
parent 6c68b3cda7
commit c686767d4d
2 changed files with 9 additions and 3 deletions

View File

@ -440,10 +440,13 @@ def parseaddr_unicode(addr) -> (str, str):
'=?UTF-8?B?TmjGoW4gTmd1eeG7hW4=?= <abcd@gmail.com>' -> ('Nhơn Nguyễn', "abcd@gmail.com")
"""
name, email = parseaddr(addr)
email = email.lower()
email = email.strip().lower()
if name:
name = name.strip()
decoded_string, charset = decode_header(name)[0]
if charset is not None:
return decoded_string.decode(charset), email
name = decoded_string.decode(charset)
else:
return decoded_string, email
name = decoded_string
return name, email

View File

@ -65,6 +65,9 @@ def test_add_or_replace_header():
def test_parseaddr_unicode():
# only email
assert parseaddr_unicode("abcd@gmail.com") == ("", "abcd@gmail.com",)
# ascii address
assert parseaddr_unicode("First Last <abcd@gmail.com>") == (
"First Last",