Mercurial > hg > gcmultimerge
changeset 14:8262efacf3fb
Initial implementation of sending e-mail in fatal error cases.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 04 Jul 2016 12:59:30 +0300 |
parents | dd240a7ad913 |
children | 86dd9280dcff |
files | multimerge.py |
diffstat | 1 files changed, 34 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/multimerge.py Mon Jul 04 12:58:51 2016 +0300 +++ b/multimerge.py Mon Jul 04 12:59:30 2016 +0300 @@ -13,6 +13,10 @@ import re import time import datetime + +import smtplib +from email.mime.text import MIMEText + import httplib2 import ConfigParser import oauth2client @@ -40,6 +44,19 @@ ## Fatal errors def gcm_fatal(smsg): gcm_print(u"ERROR: "+ smsg) + if cfg.email_ok and cfg.email: + ## If e-mail is set, send e-mail + msg = MIMEText(("\n".join(gcm_msgbuf)).encode("UTF-8"), "plain") + msg.set_charset("UTF-8") + msg["Subject"] = cfg.email_subject + msg["From"] = cfg.email_sender + msg["To"] = ",".join(cfg.email_to) + try: + smtpH = smtplib.SMTP('localhost') + smtpH.sendmail(cfg.email_sender, cfg.email_to, msg.as_string()) + smtpH.quit() + except: + gcm_print("FATAL: Oh crap, e-mail sending failed.") sys.exit(1) @@ -221,6 +238,12 @@ cfg.mdef("debug", True, gcm_is_bool, gcm_trans_bool, False) +cfg.mdef("email_ok", False, None, None, False) +cfg.mdef("email", True, gcm_is_bool, gcm_trans_bool, False) +cfg.mdef("email_to", True, gcm_is_email_list, gcm_trans_email_list, None) +cfg.mdef("email_sender", True, gcm_is_email, None, None) +cfg.mdef("email_subject", True, gcm_is_string, None, "Google Calendar MultiMerge status") + cfg.mdef("source_regex", True, gcm_is_string, None, "^R:\s*(.*?)\s*\(\s*(.+?)\s*\)\s*$") cfg.mdef("source_regmap", False, gcm_is_list, gcm_trans_list, [1, 2]) cfg.mdef("source_regmap_len", False, None, None, len(cfg.source_regmap)) @@ -265,6 +288,17 @@ ## Validate settings +if cfg.email: + if cfg.email_subject == None or len(cfg.email_subject) == 0: + gcm_fatal("E-mail enabled but email_subject not set.") + elif cfg.email_sender == None: + gcm_fatal("E-mail enabled but email_sender not set.") + elif cfg.email_to == None: + gcm_fatal("E-mail enabled but email_to not set.") + else: + cfg.mset("email_ok", True) + + if len(cfg.source_regmap) != cfg.source_regmap_len: gcm_fatal("Setting source_regmap list must be {0} items.".format(cfg.source_regmap_len)) else: