classify-users: determine type of Athena accounts
[user/alex/software/my-snippets.git] / mail-merge
index d7375f880a7b35bdd9e5330154fcab1e129e69f1..5de621e0098b4dc3bd46862c56d265255b92d7b6 100755 (executable)
@@ -33,6 +33,8 @@ def sendmail_cmd(addrs, text):
     args.extend(addrs)
     proc = subprocess.Popen(args, stdin=subprocess.PIPE)
     proc.communicate(text)
+    if proc.returncode != 0:
+        raise RuntimeError, "sendmail returned %d" % (proc.returncode, )
 cmd_funcs = (lambda: True, sendmail_cmd)
 
 setup_sendmail, sendmail = smtp_funcs
@@ -111,11 +113,14 @@ def msg_filter_factory(opts):
     return filter_rt
 
 def mail_merge(opts, cc_addr, email_file, recipients_file):
-    email_tmpl = open(email_file, 'r').read()
-    reader = csv.reader(open(recipients_file, 'r'))
+    email_tmpl = open(email_file, 'rU').read()
+    reader = csv.reader(open(recipients_file, 'rU'))
     header = reader.next()
     msg_filter = msg_filter_factory(opts)
     print header
+    if not 'email' in header:
+        print >>sys.stderr, "Your CSV file doesn't have an email field. You should fix that.\n(Note that this script is case-sensitive.)"
+        return False
     for line in reader:
         dct = dictize_line(header, line, )
         print dct