diff options
| author | R David Murray <rdmurray@bitdance.com> | 2011-07-18 21:59:53 -0400 |
|---|---|---|
| committer | R David Murray <rdmurray@bitdance.com> | 2011-07-18 21:59:53 -0400 |
| commit | 4c14bba7f9a97f3ea5d2f89eeeeb518464971f23 (patch) | |
| tree | 62ebf320f24bad2cb9cd550bdd8703c6fb2da00e /Lib/smtplib.py | |
| parent | da7af4d7a1866d53d50ad5253bf189e1b752cb04 (diff) | |
| download | cpython-git-4c14bba7f9a97f3ea5d2f89eeeeb518464971f23.tar.gz | |
#7484: simplify quoteaddr: if parseaddr throws an error it is a bug.
As far as I can tell, the try/except was ancient code, from before the email
package rewrite where the philosophy of never throwing parsing errors was
adopted.
Diffstat (limited to 'Lib/smtplib.py')
| -rw-r--r-- | Lib/smtplib.py | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/Lib/smtplib.py b/Lib/smtplib.py index 55935d241e..c7ff821bd6 100644 --- a/Lib/smtplib.py +++ b/Lib/smtplib.py @@ -133,24 +133,18 @@ class SMTPAuthenticationError(SMTPResponseException): combination provided. """ -def quoteaddr(addr): +def quoteaddr(addrstring): """Quote a subset of the email addresses defined by RFC 821. Should be able to handle anything email.utils.parseaddr can handle. """ - m = (None, None) - try: - m = email.utils.parseaddr(addr)[1] - except AttributeError: - pass - if m == (None, None): # Indicates parse failure or AttributeError - # something weird here.. punt -ddm - return "<%s>" % addr - elif m is None: - # the sender wants an empty return address - return "<>" - else: - return "<%s>" % m + displayname, addr = email.utils.parseaddr(addrstring) + if (displayname, addr) == ('', ''): + # parseaddr couldn't parse it, use it as is and hope for the best. + if addrstring.strip().startswith('<'): + return addrstring + return "<%s>" % addrstring + return "<%s>" % addr def _addr_only(addrstring): displayname, addr = email.utils.parseaddr(addrstring) |
