aboutsummaryrefslogtreecommitdiffstats
path: root/Mailman/Handlers/AvoidDuplicates.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mailman/Handlers/AvoidDuplicates.py')
-rw-r--r--Mailman/Handlers/AvoidDuplicates.py31
1 files changed, 19 insertions, 12 deletions
diff --git a/Mailman/Handlers/AvoidDuplicates.py b/Mailman/Handlers/AvoidDuplicates.py
index af740da2..b388a3d8 100644
--- a/Mailman/Handlers/AvoidDuplicates.py
+++ b/Mailman/Handlers/AvoidDuplicates.py
@@ -1,17 +1,17 @@
-# Copyright (C) 2002 by the Free Software Foundation, Inc.
+# Copyright (C) 2002-2003 by the Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
-#
+#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-#
+#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
+# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
"""If the user wishes it, do not send duplicates of the same message.
@@ -22,9 +22,16 @@ has already received a copy, we either drop the message, add a duplicate
warning header, or pass it through, depending on the user's preferences.
"""
+from email.Utils import getaddresses, formataddr
from Mailman import mm_cfg
-from email.Utils import getaddresses, formataddr
+COMMASPACE = ', '
+
+try:
+ True, False
+except NameError:
+ True = 1
+ False = 0
@@ -38,7 +45,7 @@ def process(mlist, msg, msgdata):
listaddrs = [mlist.GetListEmail(), mlist.GetBouncesEmail(),
mlist.GetOwnerEmail(), mlist.GetRequestEmail()]
for addr in listaddrs:
- explicit_recips[addr] = 1
+ explicit_recips[addr] = True
# Figure out the set of explicit recipients
ccaddrs = {}
for header in ('to', 'cc', 'resent-to', 'resent-cc'):
@@ -50,7 +57,7 @@ def process(mlist, msg, msgdata):
if not addr:
continue
# Ignore the list addresses for purposes of dup avoidance
- explicit_recips[addr] = 1
+ explicit_recips[addr] = True
# Now strip out the list addresses
for addr in listaddrs:
del explicit_recips[addr]
@@ -61,18 +68,18 @@ def process(mlist, msg, msgdata):
for r in recips:
# If this recipient is explicitly addressed...
if explicit_recips.has_key(r):
- send_duplicate = 1
+ send_duplicate = True
# If the member wants to receive duplicates, or if the recipient
# is not a member at all, just flag the X-Mailman-Duplicate: yes
# header.
if mlist.isMember(r) and \
mlist.getMemberOption(r, mm_cfg.DontReceiveDuplicates):
- send_duplicate = 0
+ send_duplicate = False
# We'll send a duplicate unless the user doesn't wish it. If
# personalization is enabled, the add-dupe-header flag will add a
# X-Mailman-Duplicate: yes header for this user's message.
if send_duplicate:
- msgdata.setdefault('add-dup-header', {})[r] = 1
+ msgdata.setdefault('add-dup-header', {})[r] = True
newrecips.append(r)
elif ccaddrs.has_key(r):
del ccaddrs[r]
@@ -83,6 +90,6 @@ def process(mlist, msg, msgdata):
newrecips.append(r)
# Set the new list of recipients
msgdata['recips'] = newrecips
+ # RFC 2822 specifies zero or one CC header
del msg['cc']
- for item in ccaddrs.values():
- msg['cc'] = formataddr(item)
+ msg['Cc'] = COMMASPACE.join([formataddr(i) for i in ccaddrs.values()])