2020-06-05 12:42:04 +00:00
|
|
|
import os
|
|
|
|
import smtplib
|
|
|
|
|
|
|
|
|
|
|
|
class NotificationService(object):
|
|
|
|
"""This is a nopaque notifcation service object."""
|
|
|
|
|
|
|
|
def __init__(self, execute_flag):
|
|
|
|
super(NotificationService, self).__init__()
|
|
|
|
self.execute_flag = execute_flag # If True mails are sent normaly
|
2020-06-08 08:23:32 +00:00
|
|
|
# If False mails are not sent. Used to avoid sending mails for jobs
|
|
|
|
# that have been completed a long time ago. Use this if you implement
|
|
|
|
# notify into an already existing nopaque instance. Change it to True
|
|
|
|
# after the daemon has run one time with the flag set to False
|
2020-06-05 12:42:04 +00:00
|
|
|
self.not_sent = {} # Holds due to an error unsent email notifications
|
|
|
|
self.mail_limit_exceeded = False # Bool to show if the mail server
|
|
|
|
# stoped sending mails due to exceeding its sending limit
|
|
|
|
|
|
|
|
def get_smtp_configs(self):
|
|
|
|
self.password = os.environ.get('MAIL_PASSWORD')
|
|
|
|
self.port = os.environ.get('MAIL_PORT')
|
|
|
|
self.server_str = os.environ.get('MAIL_SERVER')
|
|
|
|
self.tls = os.environ.get('MAIL_USE_TLS')
|
|
|
|
self.username = os.environ.get('MAIL_USERNAME').split("@")[0]
|
|
|
|
self.email_address = os.environ.get('MAIL_USERNAME')
|
|
|
|
|
|
|
|
def set_server(self):
|
|
|
|
self.smtp_server = smtplib.SMTP(host=self.server_str, port=self.port)
|
|
|
|
|
|
|
|
def login(self):
|
|
|
|
self.smtp_server.starttls()
|
|
|
|
self.smtp_server.login(self.username, self.password)
|
|
|
|
|
|
|
|
def send(self, email):
|
|
|
|
if self.execute_flag:
|
|
|
|
self.smtp_server.send_message(email)
|
|
|
|
else:
|
|
|
|
return
|
|
|
|
|
|
|
|
def quit(self):
|
2020-06-08 08:23:32 +00:00
|
|
|
self.smtp_server.quit()
|