summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbwarsaw2002-12-02 14:21:58 +0000
committerbwarsaw2002-12-02 14:21:58 +0000
commitcfdcf7bddc3454f0ee5f598356fb7c9dfa026a3a (patch)
tree30a8879a1a17e6dbb19fe669f3f21905f22cda55
parent4372203ed5f8ce09aae46f1d655a70e45ad32252 (diff)
downloadmailman-cfdcf7bddc3454f0ee5f598356fb7c9dfa026a3a.tar.gz
mailman-cfdcf7bddc3454f0ee5f598356fb7c9dfa026a3a.tar.zst
mailman-cfdcf7bddc3454f0ee5f598356fb7c9dfa026a3a.zip
check(): First, use parseaddr() to split up any realname/addrs found,
then uniquify the return results based on the address.
-rw-r--r--Mailman/Bouncers/DSN.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/Mailman/Bouncers/DSN.py b/Mailman/Bouncers/DSN.py
index b240e7bdb..3e040beff 100644
--- a/Mailman/Bouncers/DSN.py
+++ b/Mailman/Bouncers/DSN.py
@@ -17,6 +17,7 @@
"""Parse RFC 1894 (i.e. DSN) bounce formats."""
from email.Iterators import typed_subpart_iterator
+from email.Utils import parseaddr
from cStringIO import StringIO
@@ -59,7 +60,13 @@ def check(msg):
# Note that params should already be unquoted.
addrs.extend(params)
break
- return filter(None, addrs)
+ # Uniquify
+ rtnaddrs = {}
+ for a in addrs:
+ if a is not None:
+ realname, a = parseaddr(a)
+ rtnaddrs[a] = 1
+ return rtnaddrs.keys()