summaryrefslogtreecommitdiff
path: root/mailman/Message.py
diff options
context:
space:
mode:
authorBarry Warsaw2009-01-05 00:54:19 -0500
committerBarry Warsaw2009-01-05 00:54:19 -0500
commit37c255b7b0c1b8ea10c8d24a44c8586de86ffcc6 (patch)
treef2225cf1049360298cdaca89b6ca4458b6af3bcc /mailman/Message.py
parentf6d998b93b0dd8978eadc9abc4c3964e3fe66bf7 (diff)
downloadmailman-37c255b7b0c1b8ea10c8d24a44c8586de86ffcc6.tar.gz
mailman-37c255b7b0c1b8ea10c8d24a44c8586de86ffcc6.tar.zst
mailman-37c255b7b0c1b8ea10c8d24a44c8586de86ffcc6.zip
Diffstat (limited to 'mailman/Message.py')
-rw-r--r--mailman/Message.py48
1 files changed, 18 insertions, 30 deletions
diff --git a/mailman/Message.py b/mailman/Message.py
index 5ca763b30..ac41a758c 100644
--- a/mailman/Message.py
+++ b/mailman/Message.py
@@ -17,8 +17,8 @@
"""Standard Mailman message object.
-This is a subclass of mimeo.Message but provides a slightly extended interface
-which is more convenient for use inside Mailman.
+This is a subclass of email.message.Message but provides a slightly extended
+interface which is more convenient for use inside Mailman.
"""
import re
@@ -28,15 +28,15 @@ import email.utils
from email.charset import Charset
from email.header import Header
+from lazr.config import as_boolean
-from mailman import Defaults
from mailman import Utils
from mailman.config import config
COMMASPACE = ', '
mo = re.match(r'([\d.]+)', email.__version__)
-VERSION = tuple([int(s) for s in mo.group().split('.')])
+VERSION = tuple(int(s) for s in mo.group().split('.'))
@@ -111,7 +111,7 @@ class Message(email.message.Message):
self._headers = headers
# I think this method ought to eventually be deprecated
- def get_sender(self, use_envelope=None, preserve_case=0):
+ def get_sender(self):
"""Return the address considered to be the author of the email.
This can return either the From: header, the Sender: header or the
@@ -124,20 +124,13 @@ class Message(email.message.Message):
- Otherwise, the search order is From:, Sender:, unixfrom
- The optional argument use_envelope, if given overrides the
- config.mailman.use_envelope_sender setting. It should be set to
- either True or False (don't use None since that indicates
- no-override).
-
unixfrom should never be empty. The return address is always
- lowercased, unless preserve_case is true.
+ lower cased.
This method differs from get_senders() in that it returns one and only
one address, and uses a different search order.
"""
- senderfirst = config.mailman.use_envelope_sender
- if use_envelope is not None:
- senderfirst = use_envelope
+ senderfirst = as_boolean(config.mailman.use_envelope_sender)
if senderfirst:
headers = ('sender', 'from')
else:
@@ -166,46 +159,41 @@ class Message(email.message.Message):
else:
# TBD: now what?!
address = ''
- if not preserve_case:
- return address.lower()
- return address
+ return address.lower()
- def get_senders(self, preserve_case=0, headers=None):
+ def get_senders(self):
"""Return a list of addresses representing the author of the email.
The list will contain the following addresses (in order)
depending on availability:
1. From:
- 2. unixfrom
+ 2. unixfrom (From_)
3. Reply-To:
4. Sender:
- The return addresses are always lower cased, unless `preserve_case' is
- true. Optional `headers' gives an alternative search order, with None
- meaning, search the unixfrom header. Items in `headers' are field
- names without the trailing colon.
+ The return addresses are always lower cased.
"""
- if headers is None:
- headers = Defaults.SENDER_HEADERS
pairs = []
- for h in headers:
- if h is None:
+ for header in config.mailman.sender_headers.split():
+ header = header.lower()
+ if header == 'from_':
# get_unixfrom() returns None if there's no envelope
- fieldval = self.get_unixfrom() or ''
+ unix_from = self.get_unixfrom()
+ fieldval = (unix_from if unix_from is not None else '')
try:
pairs.append(('', fieldval.split()[1]))
except IndexError:
# Ignore badly formatted unixfroms
pass
else:
- fieldvals = self.get_all(h)
+ fieldvals = self.get_all(header)
if fieldvals:
pairs.extend(email.utils.getaddresses(fieldvals))
authors = []
for pair in pairs:
address = pair[1]
- if address is not None and not preserve_case:
+ if address is not None:
address = address.lower()
authors.append(address)
return authors