from fastapi_mail import FastMail, MessageSchema
from app.config import conf
import smtplib
from email.message import EmailMessage
from app.config import settings  


RESET_OTP_EXPIRE_MINUTES = 10 

async def send_otp_email(email: str, otp: str):
    """Sends OTP via email."""
    message = MessageSchema(
        subject="Password Reset OTP",
        recipients=[email],
        body=f"Your OTP for password reset is: {otp}. It is valid for {RESET_OTP_EXPIRE_MINUTES} minutes.",
        subtype="plain",
    )
    fm = FastMail(conf)
    await fm.send_message(message)

def send_email(to: str, subject: str, body: str) -> bool:
    try:
        msg = EmailMessage()
        msg["From"] = settings.MAIL_FROM
        msg["To"] = to
        msg["Subject"] = subject
        msg.set_content(body)

        with smtplib.SMTP(settings.MAIL_SERVER, settings.MAIL_PORT) as server:
            if settings.MAIL_STARTTLS:
                server.starttls()

            server.login(settings.MAIL_USERNAME, settings.MAIL_PASSWORD)
            server.send_message(msg)

        return True

    except Exception as e:
        print(f"Unexpected error sending email: {e}")
        return False
