import nodemailer from 'nodemailer'

// Transporte SMTP (mismas variables que Django; hoy: Proton Mail).
let transporter: nodemailer.Transporter | null = null

function getTransporter(): nodemailer.Transporter {
  if (!transporter) {
    transporter = nodemailer.createTransport({
      host: process.env.EMAIL_HOST,
      port: Number(process.env.EMAIL_PORT || 587),
      secure: process.env.EMAIL_USE_SSL === 'True', // true para 465, false para 587 (STARTTLS)
      // Sin esto el STARTTLS del 587 es OPORTUNISTA: si el servidor no lo
      // ofrece, nodemailer manda en claro (y ahí van tokens y contraseñas).
      requireTLS: process.env.EMAIL_USE_TLS === 'True',
      auth: {
        user: process.env.EMAIL_HOST_USER,
        pass: process.env.EMAIL_HOST_PASSWORD,
      },
    })
  }
  return transporter
}

export async function sendMail(to: string, subject: string, html: string): Promise<boolean> {
  try {
    await getTransporter().sendMail({
      from: process.env.EMAIL_HOST_USER,
      to,
      subject,
      html,
    })
    return true
  } catch (e) {
    console.error('sendMail error:', e)
    return false
  }
}
