""" Test Email client using mylib.config.Config for configuration """ import datetime import logging import os import sys from mylib.config import Config from mylib.email import EmailClient log = logging.getLogger(__name__) def main(argv=None): # pylint: disable=too-many-locals,too-many-statements """Script main""" if argv is None: argv = sys.argv[1:] config = Config(__doc__, __name__.replace(".", "_")) email_client = EmailClient(config=config) email_client.set_default( "templates_path", os.path.join(os.path.dirname(os.path.realpath(__file__)), "email_templates"), ) email_client.configure() # Options parser parser = config.get_arguments_parser(description=__doc__) 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", ) options = config.parse_arguments_options() if not options.test_to: parser.error("You must specify at least one test email recipient using -t/--to parameter") sys.exit(1) logging.info("Send a test email to %s", ", ".join(options.test_to)) if email_client.send(options.test_to, template="test", sent_date=datetime.datetime.now()): logging.info("Test email sent") sys.exit(0) logging.error("Fail to send test email") sys.exit(1)