"""Mailversand ueber das eigene Postfach (SMTP).""" import logging import smtplib from email.message import EmailMessage from . import config log = logging.getLogger(__name__) def configured() -> bool: return bool(config.SMTP_HOST and config.SMTP_FROM and config.REMINDER_TO) def send(subject: str, body: str) -> None: """Verschickt eine Mail. Wirft bei Fehlern - der Aufrufer entscheidet, ob nachher erneut versucht wird.""" if not configured(): raise RuntimeError("SMTP ist nicht konfiguriert (SMTP_HOST/SMTP_FROM/REMINDER_TO)") message = EmailMessage() message["Subject"] = subject message["From"] = config.SMTP_FROM message["To"] = config.REMINDER_TO message.set_content(body) with smtplib.SMTP(config.SMTP_HOST, config.SMTP_PORT, timeout=20) as server: if config.SMTP_STARTTLS: server.starttls() if config.SMTP_USER: server.login(config.SMTP_USER, config.SMTP_PASSWORD) server.send_message(message) log.info("Mail verschickt: %s", subject)