changeset 95:b5cc76f18256

Fix e-mail sending and implement basic TLS support for outgoing SMTP.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 02 Aug 2016 12:50:03 +0300
parents f6836a604322
children 6e8e3695cfaa
files multimerge.py
diffstat 1 files changed, 14 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/multimerge.py	Wed Jul 27 15:10:46 2016 +0300
+++ b/multimerge.py	Tue Aug 02 12:50:03 2016 +0300
@@ -69,9 +69,16 @@
         msg["From"] = cfg.email_sender
         msg["To"] = ",".join(cfg.email_to)
         try:
-            smtpH = smtplib.SMTP(cfg.email_server)
-            smtpH.sendmail(cfg.email_sender, cfg.email_to, msg.as_string())
-            smtpH.quit()
+            server = smtplib.SMTP(cfg.email_server)
+            if gcm_check_debug(4):
+                server.set_debuglevel(10)
+
+            if cfg.email_use_tls:
+                server.starttls()
+
+            server.login(cfg.email_srv_user, cfg.email_srv_password)
+            server.sendmail(cfg.email_sender, cfg.email_to, msg.as_string())
+            server.quit()
         except Exception as e:
             gcm_print(u"FATAL: Oh crap, e-mail sending failed: {0}".format(str(e)))
     sys.exit(1)
@@ -353,7 +360,11 @@
 cfg.mdef("email_to", True, cfg.is_email_list, cfg.trans_email_list, None)
 cfg.mdef("email_sender", True, cfg.is_email, None, None)
 cfg.mdef("email_subject", True, cfg.is_string, None, u"Google Calendar MultiMerge status")
+
+cfg.mdef("email_use_tls", True, cfg.is_bool, cfg.trans_bool, False)
 cfg.mdef("email_server", True, cfg.is_string, None, None)
+cfg.mdef("email_srv_user", True, cfg.is_string, None, None)
+cfg.mdef("email_srv_password", True, cfg.is_string, None, None)
 
 cfg.mdef("source_regex", True, cfg.is_string, None, u"^R:\s*(.*?)\s*\(\s*(.+?)\s*\)\s*$")
 cfg.mdef("source_regmap", False, cfg.is_list, cfg.trans_list, [1, 2])
@@ -429,7 +440,6 @@
     gcm_fatal(u"Target calendar ID or name required, but not set.")
 
 
-
 ## Initialize and authorize API connection
 credentials = gcm_get_credentials(cfg)
 http = credentials.authorize(httplib2.Http())