Handle multi-hop source path in parseaddr.

This commit is contained in:
Stuart Gathman committed 2008-01-10 16:41:04 +00:00
1 parent 632e7b4248
commit 017784b5a7
1 file changed
+17 -2
+17 -2
View File
@@ -51,13 +51,28 @@ def parseaddr(t):
('Full Name', '[email protected]')
>>> parseaddr('[email protected] <[email protected]>')
('[email protected]', '[email protected]')
>>> parseaddr('God@heaven <@hop1.org,@hop2.net:[email protected]>')
('God@heaven', '[email protected]')
"""
#return email.Utils.parseaddr(t)
res = rfc822.parseaddr(t)
# dirty fix for some broken cases
if not res[0]:
pos = t.find('<')
if pos > 0:
return rfc822.parseaddr('"%s" %s' % (t[:pos].strip(),t[pos:]))
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))
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