"""Notifikasi email opsional via SMTP. Kredensial hanya dari environment variables."""
from __future__ import annotations

import logging
import smtplib
from email.message import EmailMessage

from .config import env

log = logging.getLogger("csm.notifier")


def smtp_enabled() -> bool:
    return bool(env("SMTP_HOST"))


def send_alert_email(to_addr: str, subject: str, body: str) -> bool:
    if not smtp_enabled() or not to_addr:
        return False
    msg = EmailMessage()
    msg["From"] = env("SMTP_FROM", "monitoring@example.local")
    msg["To"] = to_addr
    msg["Subject"] = subject[:150].replace("\n", " ")
    msg.set_content(body)
    try:
        with smtplib.SMTP(env("SMTP_HOST"), int(env("SMTP_PORT", "587")), timeout=10) as s:
            s.starttls()
            if env("SMTP_USER"):
                s.login(env("SMTP_USER"), env("SMTP_PASS"))
            s.send_message(msg)
        return True
    except Exception as exc:  # jangan jatuhkan engine karena SMTP
        log.warning("Gagal kirim email: %s", type(exc).__name__)
        return False
