diff options
| author | klm | 1998-07-23 22:54:06 +0000 |
|---|---|---|
| committer | klm | 1998-07-23 22:54:06 +0000 |
| commit | b9e2958513f4f799f75b8b0d1a6b1bdd5320d781 (patch) | |
| tree | acb19b45cad79996838379d78f9c7a4bbfcb24a0 /Mailman/Deliverer.py | |
| parent | f7d1f4909c347a4b3305f026f2ef483c48c64c7d (diff) | |
| download | mailman-b9e2958513f4f799f75b8b0d1a6b1bdd5320d781.tar.gz mailman-b9e2958513f4f799f75b8b0d1a6b1bdd5320d781.tar.zst mailman-b9e2958513f4f799f75b8b0d1a6b1bdd5320d781.zip | |
Diffstat (limited to 'Mailman/Deliverer.py')
| -rw-r--r-- | Mailman/Deliverer.py | 51 |
1 files changed, 21 insertions, 30 deletions
diff --git a/Mailman/Deliverer.py b/Mailman/Deliverer.py index 63e0119b1..344ae1bd6 100644 --- a/Mailman/Deliverer.py +++ b/Mailman/Deliverer.py @@ -18,7 +18,7 @@ """Mixin class with message delivery routines.""" -import string, os, sys, tempfile +import string, os, sys import mm_cfg import Errors import Utils @@ -49,24 +49,11 @@ class Deliverer: header="", footer="", remove_to=0, tmpfile_prefix = ""): if not(len(recipients)): return - # repr(recipient) necessary for addresses containing "'" quotes! - recipients = map(repr, recipients) - to_list = string.join(recipients) - tempfile.tempdir = '/tmp' - -## If this is a digest, or we ask to remove them, -## Remove old To: headers. We're going to stick our own in there. -## Also skip: Sender, return-receipt-to, errors-to, return-path, reply-to, -## (precedence, and received). - + # Massage the headers. if remove_to: - # Writing to a file is better than waiting for sendmail to exit - tempfile.template = tmpfile_prefix +'mailman-digest.' del msg['to'] del msg['x-to'] msg.headers.append('To: %s\n' % self.GetListEmail()) - else: - tempfile.template = tmpfile_prefix + 'mailman.' if self.reply_goes_to_list: del msg['reply-to'] msg.headers.append('Reply-To: %s\n' % self.GetListEmail()) @@ -74,26 +61,30 @@ class Deliverer: msg.headers.append('Errors-To: %s\n' % self.GetAdminEmail()) msg.headers.append('X-BeenThere: %s\n' % self.GetListEmail()) - tmp_file_name = tempfile.mktemp() - tmp_file = open(tmp_file_name, 'w+') - tmp_file.write(string.join(msg.headers,'') + '\n') + cmd = "%s %s" % (mm_cfg.PYTHON, + os.path.join(mm_cfg.SCRIPTS_DIR, "deliver")) + cmdproc = os.popen(cmd, 'w') + cmdproc.write("%d\n" % self.num_spawns) + cmdproc.write("%s\n" % self.GetAdminEmail()) + for r in recipients: + # Mustn't send blank lines before end of recipients: + if not r: continue + cmdproc.write(r + "\n") + cmdproc.write("\n") # Empty line for end of recipients. + cmdproc.write(string.join(msg.headers, '') + "\n") if header: # The *body* header: - tmp_file.write(header + '\n') - tmp_file.write(self.QuotePeriods(msg.body)) + cmdproc.write(header + "\n") + cmdproc.write(self.QuotePeriods(msg.body)) if footer: - tmp_file.write(footer) - tmp_file.close() - cmd = "%s %s %s %s %s %s" % ( - mm_cfg.PYTHON, - os.path.join(mm_cfg.SCRIPTS_DIR, "deliver"), - tmp_file_name, self.GetAdminEmail(), - self.num_spawns, to_list) - file = os.popen(cmd) - status = file.close() + cmdproc.write(footer) + + status = cmdproc.close() + if status: sys.stderr.write('Non-zero exit status: %d' - '\nCmd: %s' % ((status >> 8), cmd)) + '\nCommand: %s' % ((status >> 8), cmd)) + def SendPostAck(self, msg, sender): subject = msg.getheader('subject') if not subject: |
