diff options
| author | Barry Warsaw | 2008-03-30 19:38:18 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2008-03-30 19:38:18 -0400 |
| commit | 0e1c2be3e6110ccece3cbd0ebc5bfd0eb76c3aad (patch) | |
| tree | c0432554f9bb4068b6bae6e3a83ddde925c0cd4f /mailman/inject.py | |
| parent | 7f440dc39489b32257c35f15ee6f27d90a197cf5 (diff) | |
| download | mailman-0e1c2be3e6110ccece3cbd0ebc5bfd0eb76c3aad.tar.gz mailman-0e1c2be3e6110ccece3cbd0ebc5bfd0eb76c3aad.tar.zst mailman-0e1c2be3e6110ccece3cbd0ebc5bfd0eb76c3aad.zip | |
Diffstat (limited to 'mailman/inject.py')
| -rw-r--r-- | mailman/inject.py | 50 |
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) |
