From 4c14bba7f9a97f3ea5d2f89eeeeb518464971f23 Mon Sep 17 00:00:00 2001 From: R David Murray Date: Mon, 18 Jul 2011 21:59:53 -0400 Subject: [PATCH] #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. --- Lib/smtplib.py | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/Lib/smtplib.py b/Lib/smtplib.py index 55935d241ea..c7ff821bd67 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)