ail-framework/bin/NotificationHelper.py

79 lines
2.6 KiB
Python
Raw Normal View History

2018-05-04 11:53:29 +00:00
#!/usr/bin/env python3
# -*-coding:UTF-8 -*
import os
import sys
2018-10-01 13:56:48 +00:00
import argparse
2023-05-12 13:29:53 +00:00
import logging.config
import traceback
import smtplib
2018-04-16 12:50:04 +00:00
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
sys.path.append(os.environ['AIL_BIN'])
2023-05-12 13:29:53 +00:00
from lib import ail_logger
from lib import ConfigLoader
"""
This module allows the global configuration and management of notification settings and methods.
"""
config_loader = ConfigLoader.ConfigLoader()
2023-05-12 13:29:53 +00:00
logging.config.dictConfig(ail_logger.get_config())
logger = logging.getLogger()
def sendEmailNotification(recipient, mail_subject, mail_body):
2018-04-16 12:50:04 +00:00
sender = config_loader.get_config_str("Notifications", "sender")
sender_user = config_loader.get_config_str("Notifications", "sender_user")
sender_host = config_loader.get_config_str("Notifications", "sender_host")
sender_port = config_loader.get_config_int("Notifications", "sender_port")
sender_pw = config_loader.get_config_str("Notifications", "sender_pw")
2018-11-05 13:30:03 +00:00
if sender_pw == 'None':
2018-11-05 13:20:12 +00:00
sender_pw = None
2018-03-30 09:35:37 +00:00
2018-04-04 07:41:13 +00:00
# raise an exception if any of these is None
2023-05-12 13:29:53 +00:00
if sender is None or sender_host is None or sender_port is None:
2018-04-04 07:41:13 +00:00
raise Exception('SMTP configuration (host, port, sender) is missing or incomplete!')
2018-03-30 09:35:37 +00:00
2018-04-04 07:41:13 +00:00
try:
if sender_pw is not None:
2018-07-16 13:51:37 +00:00
try:
smtp_server = smtplib.SMTP(sender_host, sender_port)
smtp_server.starttls()
except smtplib.SMTPNotSupportedError:
print("The server does not support the STARTTLS extension.")
smtp_server = smtplib.SMTP_SSL(sender_host, sender_port)
2018-04-04 07:41:13 +00:00
smtp_server.ehlo()
if sender_user is not None:
smtp_server.login(sender_user, sender_pw)
else:
smtp_server.login(sender, sender_pw)
2018-04-04 07:41:13 +00:00
else:
smtp_server = smtplib.SMTP(sender_host, sender_port)
2018-04-16 12:50:04 +00:00
2018-04-04 07:41:13 +00:00
mime_msg = MIMEMultipart()
mime_msg['From'] = sender
mime_msg['To'] = recipient
mime_msg['Subject'] = mail_subject
2018-04-16 12:50:04 +00:00
mime_msg.attach(MIMEText(mail_body, 'plain'))
2018-04-16 12:50:04 +00:00
2018-04-04 07:41:13 +00:00
smtp_server.sendmail(sender, recipient, mime_msg.as_string())
smtp_server.quit()
print('Send notification: ' + mail_subject + ' to '+recipient)
2018-04-16 12:50:04 +00:00
except Exception as err:
traceback.print_tb(err.__traceback__)
2023-05-12 13:29:53 +00:00
logger.warning(err)
2018-10-01 13:56:48 +00:00
2018-10-01 13:56:48 +00:00
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Test notification sender.')
parser.add_argument("addr", help="Test mail 'to' address")
args = parser.parse_args()
sendEmailNotification(args.addr, '_mail test_', 'Success.')