import nodemailer, { type Transporter } from "nodemailer"; import { env } from "@/env"; let transporter: Transporter | null = null; function getTransport(): Transporter | null { if (!env.SMTP_HOST) return null; if (!transporter) { transporter = nodemailer.createTransport({ host: env.SMTP_HOST, port: env.SMTP_PORT ?? 587, secure: env.SMTP_SECURE, auth: env.SMTP_USER ? { user: env.SMTP_USER, pass: env.SMTP_PASSWORD } : undefined, }); } return transporter; } /** Send an HTML email. No-ops (returns false) when SMTP isn't configured. */ export async function sendMail(to: string, subject: string, html: string): Promise { const t = getTransport(); if (!t) { console.warn("[email] SMTP not configured — skipping mail to", to); return false; } try { await t.sendMail({ from: env.SMTP_FROM ?? `no-reply@${env.HOTEL_NAME}`, to, subject, html, }); return true; } catch (e) { console.error("[email] send failed:", (e as Error).message); return false; } }