This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author skreft
Recipients barry, r.david.murray, skreft
Date 2018-11-12.22:09:52
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1542060592.48.0.788709270274.issue35222@psf.upfronthosting.co.za>
In-reply-to
Content
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)
History
Date User Action Args
2018-11-12 22:09:52skreftsetrecipients: + skreft, barry, r.david.murray
2018-11-12 22:09:52skreftsetmessageid: <1542060592.48.0.788709270274.issue35222@psf.upfronthosting.co.za>
2018-11-12 22:09:52skreftlinkissue35222 messages
2018-11-12 22:09:52skreftcreate