def publishMessage(self, topic, data):
        host = self.config.getValue(ConfigConst.SMTP_CLOUD_SECTION,
                                    ConfigConst.HOST_KEY)
        port = self.config.getValue(ConfigConst.SMTP_CLOUD_SECTION,
                                    ConfigConst.PORT_KEY)
        fromAddr = self.config.getValue(ConfigConst.SMTP_CLOUD_SECTION,
                                        ConfigConst.FROM_ADDRESS_KEY)
        toAddr = self.config.getValue(ConfigConst.SMTP_CLOUD_SECTION,
                                      ConfigConst.TO_ADDRESS_KEY)
        authToken = self.config.getValue(ConfigConst.SMTP_CLOUD_SECTION,
                                         ConfigConst.USER_AUTH_TOKEN_KEY)

        msg = MIMEMultipart()
        msg['From'] = fromAddr
        msg['To'] = toAddr
        msg['Subject'] = topic
        msgBody = str(data)

        msg.attach(MIMEText(msgBody))

        msgText = msg.as_string()

        SMTPServer = smtplib.SMTP_SSL(host, port)
        SMTPServer.ehlo()
        SMTPServer.login(fromAddr, authToken)
        SMTPServer.sendmail(fromAddr, toAddr, msgText)
        SMTPServer.close()
Ejemplo n.º 2
0
class BaseMailer(ABC):
    def __init__(self):
        smtp_local_host = env_vars['SMTP_LOCAL_HOST']
        smtp_local_port = int(env_vars['SMTP_LOCAL_PORT'])
        smtp_remote_host = env_vars['SMTP_REMOTE_HOST']
        smtp_remote_port = int(env_vars['SMTP_REMOTE_PORT'])

        self.smtp_local_address = (smtp_local_host, smtp_local_port)
        self.smtp_remote_address = (smtp_remote_host, smtp_remote_port)

        self.sender_email = env_vars['SENDER_EMAIL']
        self.sender_password = env_vars['SENDER_PASSWORD']
        self.receiver_email = env_vars['RECEIVER_EMAIL']

        self.parsed_data = []

        self.initialize_smtp_server()

    @property
    @abstractmethod
    def email_body(self):
        pass

    def initialize_smtp_server(self):
        self.smtp_server = SMTPServer(self.smtp_local_address, self.smtp_remote_address)

    def send_email(self, parsed_data):
        self.parsed_data = parsed_data

        context = create_default_context()

        with SMTP_SSL('smtp.gmail.com', 465, context=context) as server:
            server.login(self.sender_email, self.sender_password)
            server.sendmail(self.sender_email, self.receiver_email, self.email_body)
            server.quit()

        self.smtp_server.close()