summaryrefslogtreecommitdiff
path: root/src/mailman/email/message.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/email/message.py')
-rw-r--r--src/mailman/email/message.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/mailman/email/message.py b/src/mailman/email/message.py
index 994d44cce..ebfef9d9b 100644
--- a/src/mailman/email/message.py
+++ b/src/mailman/email/message.py
@@ -31,6 +31,7 @@ from email.header import Header
from email.mime.multipart import MIMEMultipart
from mailman import public
from mailman.config import config
+from mailman.interfaces.member import DeliveryStatus
COMMASPACE = ', '
@@ -131,7 +132,7 @@ class UserNotification(Message):
self['To'] = recipients
self.recipients = set([recipients])
- def send(self, mlist, add_precedence=True, **_kws):
+ def send(self, mlist, *, add_precedence=True, to_moderators=False, **_kws):
"""Sends the message by enqueuing it to the 'virgin' queue.
This is used for all internally crafted messages.
@@ -141,6 +142,9 @@ class UserNotification(Message):
:param add_precedence: Flag indicating whether a `Precedence: bulk`
header should be added to the message or not.
:type add_precedence: bool
+ :param to_moderators: Flag indicating whether the message should be
+ sent to the list's moderators instead of the list's membership.
+ :type to_moderators: bool
This function also accepts arbitrary keyword arguments. The key/value
pairs for **kws is added to the metadata dictionary associated with
@@ -158,6 +162,12 @@ class UserNotification(Message):
# don't override an existing Precedence: header.
if 'precedence' not in self and add_precedence:
self['Precedence'] = 'bulk'
+ if to_moderators:
+ self.recipients = set(
+ member.address.email
+ for member in mlist.moderators.members
+ if member.delivery_status is DeliveryStatus.enabled)
+ self['To'] = COMMASPACE.join(self.recipients)
self._enqueue(mlist, **_kws)
def _enqueue(self, mlist, **_kws):