Separate sanitize_email from sanitize_address
This commit is contained in:
parent
489d9bb8c9
commit
c6beedbc5d
|
@ -4,7 +4,7 @@ import pytest
|
|||
import datetime
|
||||
import time
|
||||
from emails.utils import (parse_name_and_email, encode_header, decode_header, sanitize_address, fetch_url,
|
||||
MessageID, format_date_header, parse_name_and_email_list)
|
||||
MessageID, format_date_header, parse_name_and_email_list, sanitize_email)
|
||||
from emails.exc import HTTPLoaderError
|
||||
|
||||
|
||||
|
@ -41,6 +41,10 @@ def test_sanitize_address():
|
|||
assert sanitize_address('a@♤.d') == 'a@xn--f6h.d'
|
||||
|
||||
|
||||
def test_sanitize_email():
|
||||
assert sanitize_email('a@♤.d') == 'a@xn--f6h.d'
|
||||
|
||||
|
||||
def test_fetch_url():
|
||||
fetch_url('http://google.com')
|
||||
with pytest.raises(HTTPLoaderError):
|
||||
|
|
|
@ -136,16 +136,7 @@ def parse_name_and_email(obj, encoding='utf-8'):
|
|||
return to_unicode(name, encoding) or None, to_unicode(email, encoding) or None
|
||||
|
||||
|
||||
def sanitize_address(addr, encoding='ascii'):
|
||||
if isinstance(addr, string_types):
|
||||
addr = parseaddr(to_unicode(addr))
|
||||
nm, addr = addr
|
||||
# This try-except clause is needed on Python 3 < 3.2.4
|
||||
# http://bugs.python.org/issue14291
|
||||
try:
|
||||
nm = Header(nm, encoding).encode()
|
||||
except UnicodeEncodeError:
|
||||
nm = Header(nm, 'utf-8').encode()
|
||||
def sanitize_email(addr, encoding='ascii'):
|
||||
try:
|
||||
addr.encode('ascii')
|
||||
except UnicodeEncodeError: # IDN
|
||||
|
@ -156,7 +147,20 @@ def sanitize_address(addr, encoding='ascii'):
|
|||
addr = '@'.join([localpart, domain])
|
||||
else:
|
||||
addr = Header(addr, encoding).encode()
|
||||
return formataddr((nm, addr))
|
||||
return addr
|
||||
|
||||
|
||||
def sanitize_address(addr, encoding='ascii'):
|
||||
if isinstance(addr, string_types):
|
||||
addr = parseaddr(to_unicode(addr))
|
||||
nm, addr = addr
|
||||
# This try-except clause is needed on Python 3 < 3.2.4
|
||||
# http://bugs.python.org/issue14291
|
||||
try:
|
||||
nm = Header(nm, encoding).encode()
|
||||
except UnicodeEncodeError:
|
||||
nm = Header(nm, 'utf-8').encode()
|
||||
return formataddr((nm, sanitize_email(addr)))
|
||||
|
||||
|
||||
class MIMEMixin():
|
||||
|
|
Reference in New Issue