Mark Sapiro
Wed, 03 Feb 2010 16:56:28 -0800
>Barry Finkel wrote: >> >>I ran a test with a test list on my test virtual machine, and this is >>what is happening. The line in the "-f" file for sync_members >> >> bsf-cr...@example.com (New 1 (zzz)) >> >>is causing all of the succeeding lines in that file to be treated as >>part of the parenthesized "name-comments" field for this new >>bsf-crane entry. The command
Yes, I am able to duplicate this issue with email 3.0.1
Utils.getaddresses(), but only if the input file is 'unix format'
(<LF> line terminators and only if the succeeding lines also have the
'name' in a comment. If the file is 'dos format' - i.e. <CRLF> line
terminators, the problem does not occur. Also, I don't think it occurs
with email 4.0.1 with either input format. And if there are lines of
the form "Display Name <u...@example.com>", the first of those and the
subsequent lines will be OK.
The underlying problem is in the _parseaddr module in the email package
which misses the second paren when a nested comment and the outer
comment terminate together
As a workaround, for sync_members, you could try the following. Find
this section
# strip out lines we don't care about, they are comments (# in first
# non-whitespace) or are blank
for i in range(len(filemembers)-1, -1, -1):
addr = filemembers[i].strip()
if addr == '' or addr[:1] == '#':
del filemembers[i]
print _('Ignore : %(addr)30s')
add three lines so it becomes
# strip out lines we don't care about, they are comments (# in first
# non-whitespace) or are blank
for i in range(len(filemembers)-1, -1, -1):
addr = filemembers[i].strip()
if addr == '' or addr[:1] == '#':
del filemembers[i]
print _('Ignore : %(addr)30s')
else:
# work around bug in email 3.0.1 Utils.getaddresses()
filemembers[i] = addr + '\r\n'
The better fix is the attached _parseaddr.patch.txt for the 3.0.1
email/_parseaddr.py
--
Mark Sapiro <m...@msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
--- _parseaddr.py.orig 2006-02-02 21:41:33.000000000 -0800
+++ _parseaddr.py 2010-02-03 16:46:42.250000000 -0800
@@ -359,6 +359,7 @@
break
elif allowcomments and self.field[self.pos] == '(':
slist.append(self.getcomment())
+ continue # have already advanced pos from getcomment
elif self.field[self.pos] == '\\':
quote = True
else:
------------------------------------------------------ Mailman-Users mailing list Mailman-Users@python.org http://mail.python.org/mailman/listinfo/mailman-users Mailman FAQ: http://wiki.list.org/x/AgA3 Security Policy: http://wiki.list.org/x/QIA9 Searchable Archives: http://www.mail-archive.com/mailman-users%40python.org/ Unsubscribe: http://mail.python.org/mailman/options/mailman-users/archive%40jab.org