import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import datetime
import os
from dotenv import load_dotenv

load_dotenv()

# SMTP-Parameter aus .env lesen
SMTP_SERVER = os.getenv("E_MAIL_SMTP_SERVER")
SMTP_PORT = int(os.getenv("E_MAIL_SMTP_SERVER_PORT"))
SMTP_USER = os.getenv("E_MAIL_ADDRESS")
SMTP_PASS = os.getenv("E_MAIL_ADDRESS_PASSWORD")
MAIL_FROM = os.getenv("E_MAIL_SEND_TO", SMTP_USER)
MAIL_TO = os.getenv("E_MAIL_SEND_TO")

if not all([SMTP_SERVER, SMTP_USER, SMTP_PASS, MAIL_TO]):
    print("⚠️  SMTP-Konfiguration unvollständig – bitte .env prüfen.")

def send_email(subject: str, body: str):
    """Allgemeine Mail-Funktion"""
    msg = MIMEMultipart()
    msg["From"] = MAIL_FROM
    msg["To"] = MAIL_TO
    msg["Subject"] = subject

    msg.attach(MIMEText(body, "plain", "utf-8"))

    try:
        with smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT) as server:
            print("Inside smtplib")
            server.login(SMTP_USER, SMTP_PASS)
            server.sendmail(MAIL_FROM, MAIL_TO.split(","), msg.as_string())
            print(f"✅ E-Mail gesendet: {subject}")
    except Exception as e:
        print(f"❌ Fehler beim Senden der E-Mail ({subject}): {e}")

def send_error_email(msg: str, process: str):
    """Fehlermeldung senden"""
    subject = f"❌ Fehler im Prozess {process}"
    body = f"Prozess: {process}\nZeit: {datetime.datetime.now()}\n\nFehlermeldung:\n{msg}"
    send_email(subject, body)

def send_report_email(msg: str, process: str):
    """Erfolgreichen Abschlussbericht senden"""
    subject = f"✅ Prozess abgeschlossen: {process}"
    body = f"Prozess: {process}\nZeit: {datetime.datetime.now()}\n\nErgebnisbericht:\n{msg}"
    send_email(subject, body)
