comparison multimerge.py @ 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 46c1a3b6135a
children 524915af5e87
comparison
equal deleted inserted replaced
94:f6836a604322 95:b5cc76f18256
67 msg.set_charset("UTF-8") 67 msg.set_charset("UTF-8")
68 msg["Subject"] = cfg.email_subject 68 msg["Subject"] = cfg.email_subject
69 msg["From"] = cfg.email_sender 69 msg["From"] = cfg.email_sender
70 msg["To"] = ",".join(cfg.email_to) 70 msg["To"] = ",".join(cfg.email_to)
71 try: 71 try:
72 smtpH = smtplib.SMTP(cfg.email_server) 72 server = smtplib.SMTP(cfg.email_server)
73 smtpH.sendmail(cfg.email_sender, cfg.email_to, msg.as_string()) 73 if gcm_check_debug(4):
74 smtpH.quit() 74 server.set_debuglevel(10)
75
76 if cfg.email_use_tls:
77 server.starttls()
78
79 server.login(cfg.email_srv_user, cfg.email_srv_password)
80 server.sendmail(cfg.email_sender, cfg.email_to, msg.as_string())
81 server.quit()
75 except Exception as e: 82 except Exception as e:
76 gcm_print(u"FATAL: Oh crap, e-mail sending failed: {0}".format(str(e))) 83 gcm_print(u"FATAL: Oh crap, e-mail sending failed: {0}".format(str(e)))
77 sys.exit(1) 84 sys.exit(1)
78 85
79 86
351 cfg.mdef("email_ok", False, None, None, False) 358 cfg.mdef("email_ok", False, None, None, False)
352 cfg.mdef("email", True, cfg.is_bool, cfg.trans_bool, False) 359 cfg.mdef("email", True, cfg.is_bool, cfg.trans_bool, False)
353 cfg.mdef("email_to", True, cfg.is_email_list, cfg.trans_email_list, None) 360 cfg.mdef("email_to", True, cfg.is_email_list, cfg.trans_email_list, None)
354 cfg.mdef("email_sender", True, cfg.is_email, None, None) 361 cfg.mdef("email_sender", True, cfg.is_email, None, None)
355 cfg.mdef("email_subject", True, cfg.is_string, None, u"Google Calendar MultiMerge status") 362 cfg.mdef("email_subject", True, cfg.is_string, None, u"Google Calendar MultiMerge status")
363
364 cfg.mdef("email_use_tls", True, cfg.is_bool, cfg.trans_bool, False)
356 cfg.mdef("email_server", True, cfg.is_string, None, None) 365 cfg.mdef("email_server", True, cfg.is_string, None, None)
366 cfg.mdef("email_srv_user", True, cfg.is_string, None, None)
367 cfg.mdef("email_srv_password", True, cfg.is_string, None, None)
357 368
358 cfg.mdef("source_regex", True, cfg.is_string, None, u"^R:\s*(.*?)\s*\(\s*(.+?)\s*\)\s*$") 369 cfg.mdef("source_regex", True, cfg.is_string, None, u"^R:\s*(.*?)\s*\(\s*(.+?)\s*\)\s*$")
359 cfg.mdef("source_regmap", False, cfg.is_list, cfg.trans_list, [1, 2]) 370 cfg.mdef("source_regmap", False, cfg.is_list, cfg.trans_list, [1, 2])
360 cfg.mdef("source_regmap_len", False, None, None, len(cfg.source_regmap)) 371 cfg.mdef("source_regmap_len", False, None, None, len(cfg.source_regmap))
361 372
425 gcm_fatal(u"Invalid source_regmap: {0}".format(str(e))) 436 gcm_fatal(u"Invalid source_regmap: {0}".format(str(e)))
426 437
427 438
428 if not cfg.dest_regex and not cfg.dest_id: 439 if not cfg.dest_regex and not cfg.dest_id:
429 gcm_fatal(u"Target calendar ID or name required, but not set.") 440 gcm_fatal(u"Target calendar ID or name required, but not set.")
430
431 441
432 442
433 ## Initialize and authorize API connection 443 ## Initialize and authorize API connection
434 credentials = gcm_get_credentials(cfg) 444 credentials = gcm_get_credentials(cfg)
435 http = credentials.authorize(httplib2.Http()) 445 http = credentials.authorize(httplib2.Http())