Skip to content
Snippets Groups Projects
Commit 017784b5 authored by Stuart Gathman's avatar Stuart Gathman
Browse files

Handle multi-hop source path in parseaddr.

parent 632e7b42
No related branches found
No related tags found
No related merge requests found
...@@ -51,13 +51,28 @@ def parseaddr(t): ...@@ -51,13 +51,28 @@ def parseaddr(t):
('Full Name', 'foo@example.com') ('Full Name', 'foo@example.com')
>>> parseaddr('spam@viagra.com <foo@example.com>') >>> parseaddr('spam@viagra.com <foo@example.com>')
('spam@viagra.com', 'foo@example.com') ('spam@viagra.com', 'foo@example.com')
>>> parseaddr('God@heaven <@hop1.org,@hop2.net:jeff@spec.org>')
('God@heaven', 'jeff@spec.org')
""" """
#return email.Utils.parseaddr(t) #return email.Utils.parseaddr(t)
res = rfc822.parseaddr(t) res = rfc822.parseaddr(t)
# dirty fix for some broken cases
if not res[0]: if not res[0]:
pos = t.find('<') pos = t.find('<')
if pos > 0: if pos > 0 and t[-1] == '>':
return rfc822.parseaddr('"%s" %s' % (t[:pos].strip(),t[pos:])) addrspec = t[pos+1:-1]
pos1 = addrspec.rfind(':')
if pos1 > 0:
addrspec = addrspec[pos1+1:]
return rfc822.parseaddr('"%s" <%s>' % (t[:pos].strip(),addrspec))
if not res[1]:
pos = t.find('<')
if pos > 0 and t[-1] == '>':
addrspec = t[pos+1:-1]
pos1 = addrspec.rfind(':')
if pos1 > 0:
addrspec = addrspec[pos1+1:]
return rfc822.parseaddr('%s<%s>' % (t[:pos].strip(),addrspec))
return res return res
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment