summaryrefslogtreecommitdiff
path: root/mailman/inject.py
diff options
context:
space:
mode:
authorBarry Warsaw2008-03-30 19:38:18 -0400
committerBarry Warsaw2008-03-30 19:38:18 -0400
commit0e1c2be3e6110ccece3cbd0ebc5bfd0eb76c3aad (patch)
treec0432554f9bb4068b6bae6e3a83ddde925c0cd4f /mailman/inject.py
parent7f440dc39489b32257c35f15ee6f27d90a197cf5 (diff)
downloadmailman-0e1c2be3e6110ccece3cbd0ebc5bfd0eb76c3aad.tar.gz
mailman-0e1c2be3e6110ccece3cbd0ebc5bfd0eb76c3aad.tar.zst
mailman-0e1c2be3e6110ccece3cbd0ebc5bfd0eb76c3aad.zip
Diffstat (limited to 'mailman/inject.py')
-rw-r--r--mailman/inject.py50
1 files changed, 47 insertions, 3 deletions
diff --git a/mailman/inject.py b/mailman/inject.py
index 5796eff5c..7e50513d8 100644
--- a/mailman/inject.py
+++ b/mailman/inject.py
@@ -15,20 +15,64 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
+__metaclass__ = type
+__all__ = [
+ 'inject_message',
+ 'inject_text',
+ ]
+
+
+from email import message_from_string
+from email.utils import formatdate, make_msgid
+
+from mailman.Message import Message
from mailman.configuration import config
from mailman.queue import Switchboard
-def inject(listname, msg, recips=None, qdir=None):
+def inject_message(mlist, msg, recips=None, qdir=None):
+ """Inject a message into a queue.
+
+ :param mlist: The mailing list this message is destined for.
+ :param msg: The Message object to inject.
+ :param recips: Optional set of recipients to put into the message's
+ metadata.
+ :param qdir: Optional queue directory to inject this message into. If not
+ given, the incoming queue is used.
+ """
if qdir is None:
qdir = config.INQUEUE_DIR
+ # Since we're crafting the message from whole cloth, let's make sure this
+ # message has a Message-ID.
+ if 'message-id' not in msg:
+ msg['Message-ID'] = make_msgid()
+ # Ditto for Date: as required by RFC 2822.
+ if 'date' not in msg:
+ msg['Date'] = formatdate(localtime=True)
queue = Switchboard(qdir)
kws = dict(
- listname=listname,
+ listname=mlist.fqdn_listname,
tolist=True,
- _plaintext=True,
+ original_size=getattr(msg, 'original_size', len(msg.as_string())),
)
if recips is not None:
kws['recips'] = recips
queue.enqueue(msg, **kws)
+
+
+
+def inject_text(mlist, text, recips=None, qdir=None):
+ """Inject a message into a queue.
+
+ :param mlist: The mailing list this message is destined for.
+ :param text: The text of the message to inject. This will be parsed into
+ a Message object.
+ :param recips: Optional set of recipients to put into the message's
+ metadata.
+ :param qdir: Optional queue directory to inject this message into. If not
+ given, the incoming queue is used.
+ """
+ message = message_from_string(text, Message)
+ message.original_size = len(text)
+ inject_message(mlist, message, recips, qdir)