From 11d2e3ba72cfbcb204a9a19ae5fc50f4ed6002ec Mon Sep 17 00:00:00 2001 From: Alex Dehnert Date: Thu, 21 Jun 2012 04:55:02 -0400 Subject: [PATCH] mail-merge: support sending mail with sendmail This adds a /usr/lib/sendmail backend, to allow running mail-merge on machines that do not run an SMTP server. --- mail-merge | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/mail-merge b/mail-merge index 8ff2459..f03baea 100755 --- a/mail-merge +++ b/mail-merge @@ -4,8 +4,10 @@ import sys import os import csv import smtplib +import subprocess sender_header = 'mail-merge-sender@mit.edu' +smtp = None def dictize_line(header, line,): line_dict = {} @@ -13,10 +15,28 @@ def dictize_line(header, line,): line_dict[key]=elem return line_dict -if __name__=='__main__': - print "Syntax: $script $cc_addr $template $recipients" +def setup_sendmail_smtp(): + global smtp smtp = smtplib.SMTP() smtp.connect() +def sendmail_smtp(addrs, text): + global smtp + smtp.sendmail(sender_header, addrs, text, ) +smtp_funcs = (setup_sendmail_smtp, sendmail_smtp, ) + +def sendmail_cmd(addrs, text): + args = ["/usr/lib/sendmail", "--", ] + args.extend(addrs) + proc = subprocess.Popen(args, stdin=subprocess.PIPE) + proc.communicate(text) +cmd_funcs = (lambda: True, sendmail_cmd) + +setup_sendmail, sendmail = smtp_funcs +setup_sendmail, sendmail = cmd_funcs + +if __name__=='__main__': + print "Syntax: $script $cc_addr $template $recipients" + setup_sendmail() cc_addr = sys.argv[1] email_file = sys.argv[2] email = open(email_file, 'r').read() @@ -27,4 +47,4 @@ if __name__=='__main__': dct = dictize_line(header, line, ) print dct text = email % dct - smtp.sendmail(sender_header, [dct['email'], cc_addr, ], text, ) + sendmail([dct['email'], cc_addr, ], text, ) -- 2.34.1