import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText


class SMTPClient:
    def __init__(self, server: str, port: int, username: str, password: str, _from: str, use_tls=False):
        self.server = server
        self.port = port
        self._from = _from
        self.username = username
        self.password = password
        self._use_tls = use_tls

    def send(self, mail: dict):
        smtp = smtplib.SMTP(self.server, self.port)
        if self._use_tls:
            smtp.starttls()
        if self.username and self.password:
            smtp.login(self.username, self.password)
        msg = MIMEMultipart()
        msg['Subject'] = mail['subject']
        msg['From'] = self._from
        msg['To'] = mail['to']
        msg.attach(MIMEText(mail['html'], 'html'))
        smtp.sendmail(self.username, mail['to'], msg.as_string())
        smtp.quit()