diff --git a/Lib/rfc822.py b/Lib/rfc822.py
index 64deaec..20abad8 100644
--- a/Lib/rfc822.py
+++ b/Lib/rfc822.py
@@ -297,35 +297,88 @@
 # Parse an address into (name, address) tuple
 
 def parseaddr(address):
-	# This is probably not perfect
-	address = string.strip(address)
-	# Case 1: part of the address is in <xx@xx> form.
-	pos = regex.search('<.*>', address)
-	if pos >= 0:
-		name = address[:pos]
-		address = address[pos:]
-		length = regex.match('<.*>', address)
-		name = name + address[length:]
-		address = address[:length]
-	else:
-		# Case 2: part of the address is in (comment) form
-		pos = regex.search('(.*)', address)
-		if pos >= 0:
-			name = address[pos:]
-			address = address[:pos]
-			length = regex.match('(.*)', name)
-			address = address + name[length:]
-			name = name[:length]
+	import string
+	str = ''
+	email = ''
+	comment = ''
+	backslash = 0
+	dquote = 0
+	space = 0
+	paren = 0
+	bracket = 0
+	seen_bracket = 0
+	for c in address:
+		if backslash:
+			str = str + c
+			backslash = 0
+			continue
+		if c == '\\':
+			backslash = 1
+			continue
+		if dquote:
+			if c == '"':
+				dquote = 0
+			else:
+				str = str + c
+			continue
+		if c == '"':
+			dquote = 1
+			continue
+		if c in string.whitespace:
+			space = 1
+			continue
+		if space:
+			str = str + ' '
+			space = 0
+		if paren:
+			if c == '(':
+				paren = paren + 1
+				str = str + c
+				continue
+			if c == ')':
+				paren = paren - 1
+				if paren == 0:
+					comment = comment + str
+					str = ''
+					continue
+		if c == '(':
+			paren = paren + 1
+			if bracket:
+				email = email + str
+				str = ''
+			elif not seen_bracket:
+				email = email + str
+				str = ''
+			continue
+		if bracket:
+			if c == '>':
+				bracket = 0
+				email = email + str
+				str = ''
+				continue
+		if c == '<':
+			bracket = 1
+			seen_bracket = 1
+			comment = comment + str
+			str = ''
+			email = ''
+			continue
+		if c == '#' and not bracket and not paren:
+			# rest is comment
+			break
+		str = str + c
+	if str:
+		if seen_bracket:
+			if bracket:
+				email = str
+			else:
+				comment = comment + str
 		else:
-			# Case 3: neither. Only an address
-			name = ''
-	name = string.strip(name)
-	address = string.strip(address)
-	if address and address[0] == '<' and address[-1] == '>':
-		address = address[1:-1]
-	if name and name[0] == '(' and name[-1] == ')':
-		name = name[1:-1]
-	return name, address
+			if paren:
+				comment = comment + str
+			else:
+				email = email + str
+	return string.strip(comment), string.strip(email)
 
 
 # Parse a date field
@@ -376,8 +429,8 @@
 # message in RFC-822 format.
 
 if __name__ == '__main__':
-	import sys
-	file = '/ufs/guido/Mail/drafts/,1'
+	import sys, os
+	file = os.path.join(os.environ['HOME'], 'Mail/drafts/,1')
 	if sys.argv[1:]: file = sys.argv[1]
 	f = open(file, 'r')
 	m = Message(f)
