# implements simple mailer to inform staff about urgent events

import smtplib

from email.message import EmailMessage
from logging import error

from ..config import *
from ..credentials import *

class Mailer:

    def __init__(self, smtpserver = MAILBOTSMTPSERVER,
                 smtpport = MAILBOTSMTPPORT,
                 smtpusername = MAILBOTSMTPUSERNAME, 
                 smtppassword = MAILBOTSMTPPASSWORD):
        self.smtpserver = smtpserver
        self.smtpport = smtpport
        self.smtpusername = smtpusername
        self.smtppassword = smtppassword

    def send_email(self, subject, content, recipient=MAILBOTDEFAULTRECIPIENT,
                   sender=None, bcc=None):
        msg = EmailMessage()
        msg.set_content(content)
        msg['Subject'] = subject
        sender = sender or f"Gomazing.de BOT <{self.smtpusername}>"
        msg['From'] = sender
        msg['To'] = recipient
        if bcc:
            msg['Bcc'] = bcc
        try:
            server = smtplib.SMTP_SSL(self.smtpserver, self.smtpport)
            server.ehlo()
            server.login(self.smtpusername, self.smtppassword)
            server.send_message(msg)
            server.close()
        except Exception as e:
            error(f"notifaction mail to {msg['To']} was not send because of"
                  f"{str(e)}")


