""" Test Email client """ import datetime import getpass import logging import os import sys from mylib.scripts.helpers import add_email_opts, get_opts_parser, init_email_client, init_logging log = logging.getLogger("mylib.scripts.email_test") def main(argv=None): # pylint: disable=too-many-locals,too-many-statements """Script main""" if argv is None: argv = sys.argv[1:] # Options parser parser = get_opts_parser(just_try=True) add_email_opts( parser, templates_path=os.path.join(os.path.dirname(os.path.realpath(__file__)), "email_templates"), ) test_opts = parser.add_argument_group("Test email options") test_opts.add_argument( "-t", "--to", action="store", type=str, dest="test_to", help="Test email recipient(s)", nargs="+", ) test_opts.add_argument( "-T", "--template", action="store_true", dest="template", help="Template name to send (default: test)", default="test", ) test_opts.add_argument( "-m", "--mako", action="store_true", dest="test_mako", help="Test mako templating", ) test_opts.add_argument( "--cc", action="store", type=str, dest="test_cc", help="Test CC email recipient(s)", nargs="+", ) test_opts.add_argument( "--bcc", action="store", type=str, dest="test_bcc", help="Test BCC email recipient(s)", nargs="+", ) options = parser.parse_args() if not options.test_to: parser.error("You must specify at least one test email recipient using -t/--to parameter") sys.exit(1) # Initialize logs init_logging(options, "Test EmailClient") if options.email_smtp_user and not options.email_smtp_password: options.email_smtp_password = getpass.getpass("Please enter SMTP password: ") email_client = init_email_client(options) log.info( "Send a test email to %s (CC: %s / BCC: %s)", ", ".join(options.test_to), ", ".join(options.test_cc) if options.test_cc else None, ", ".join(options.test_bcc) if options.test_bcc else None, ) if email_client.send( options.test_to, cc=options.test_cc, bcc=options.test_bcc, template="test", sent_date=datetime.datetime.now(), ): log.info("Test email sent") sys.exit(0) log.error("Fail to send test email") sys.exit(1)