"""E-Mail-Versand für Globe Magic Links.""" import logging import aiosmtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from config import SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD, SMTP_FROM_EMAIL, SMTP_FROM_NAME logger = logging.getLogger("globe.email") async def send_magic_link_email(to_email: str, link: str): """Sendet Magic Link per E-Mail.""" html = f"""

AEGISSIGHT GLOBE

Klicke auf den Button, um dich anzumelden:

Jetzt anmelden

Oder kopiere diesen Link in deinen Browser:
{link}

Dieser Link ist 10 Minuten gültig. Falls du diese Anfrage nicht gesendet hast, ignoriere diese E-Mail.

""" msg = MIMEMultipart("alternative") msg["From"] = f"{SMTP_FROM_NAME} <{SMTP_FROM_EMAIL}>" msg["To"] = to_email msg["Subject"] = "AegisSight Globe — Anmelde-Link" msg.attach(MIMEText(f"Dein Globe-Anmeldelink:\n\n{link}\n\nGültig für 10 Minuten.", "plain")) msg.attach(MIMEText(html, "html")) try: await aiosmtplib.send( msg, hostname=SMTP_HOST, port=SMTP_PORT, username=SMTP_USER, password=SMTP_PASSWORD, start_tls=True, ) logger.info(f"Magic Link E-Mail gesendet an {to_email}") except Exception as e: logger.error(f"E-Mail-Versand fehlgeschlagen: {e}") raise