New submission from skreft <skr...@gmail.com>:

The docs 
(https://docs.python.org/3/library/email.util.html#email.utils.formataddr) say 
that formataddr is the inverse of parseaddr, however non-ascii email addresses 
are treated differently in both methods.

parseaddr will return non-ascci addresses, whereas formataddr will raise a 
UnicodeError.

Below is an example:

In [1]: import email.utils as u

In [2]: u.parseaddr('skreft+ñandú@sudoai.com')
Out[2]: ('', 'skreft+ñandú@sudoai.com')

In [3]: u.formataddr(u.parseaddr('skreft+ñandú@sudoai.com'))
---------------------------------------------------------------------------
UnicodeEncodeError                        Traceback (most recent call last)
<ipython-input-3-1323122e1773> in <module>()
----> 1 u.formataddr(u.parseaddr('skreft+ñandú@sudoai.com'))

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/email/utils.py 
in formataddr(pair, charset)
     89     name, address = pair
     90     # The address MUST (per RFC) be ascii, so raise a UnicodeError if 
it isn't.
---> 91     address.encode('ascii')
     92     if name:
     93         try:

UnicodeEncodeError: 'ascii' codec can't encode character '\xf1' in position 7: 
ordinal not in range(128)

----------
components: email
messages: 329765
nosy: barry, r.david.murray, skreft
priority: normal
severity: normal
status: open
title: email.utils.formataddr is not exactly the reverse of 
email.utils.parseaddr
versions: Python 3.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue35222>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to