import smtplib, os, json, time from email.message import EmailMessage from ..config import OUTBOX def run(params: dict) -> dict: host = os.environ.get("SMTP_HOST"); user = os.environ.get("SMTP_USER") pw = os.environ.get("SMTP_PASS"); port = int(os.environ.get("SMTP_PORT", "587")) if not all([host, user, pw]): # queue to outbox f = OUTBOX / f"email_{int(time.time()*1000)}.json" f.write_text(json.dumps(params, indent=2)) return {"status": "queued", "outbox": str(f)} msg = EmailMessage() msg["From"] = user; msg["To"] = params["to"]; msg["Subject"] = params.get("subject", "") msg.set_content(params.get("body", "")) with smtplib.SMTP(host, port) as s: s.starttls(); s.login(user, pw); s.send_message(msg) return {"status": "sent"}