import logging from email.message import EmailMessage import aiosmtplib from app.core.app_settings import settings logger = logging.getLogger(__name__) async def send_email(*, to: list[str], subject: str, body: str) -> None: """Karte 05: Benachrichtigung bei neuem Fehlbestand. Ohne konfigurierten SMTP_HOST (Default auf Entwicklungs-/Testsystemen) wird nur geloggt, nicht gesendet - kein harter Fehler, falls die Mailkonfiguration auf dem Zielsystem noch aussteht.""" if not to: logger.info("E-Mail-Versand übersprungen (keine Empfänger): %s", subject) return if not settings.smtp_host: logger.info("SMTP nicht konfiguriert, E-Mail nicht versendet: %s an %s", subject, to) return message = EmailMessage() message["From"] = settings.smtp_from message["To"] = ", ".join(to) message["Subject"] = subject message.set_content(body) await aiosmtplib.send( message, hostname=settings.smtp_host, port=settings.smtp_port, username=settings.smtp_user or None, password=settings.smtp_password or None, start_tls=settings.smtp_use_tls, )