import nodemailer from "nodemailer"; import { createLogger } from "@/lib/logger"; const log = createLogger("email"); const transporter = nodemailer.createTransport({ host: process.env.SMTP_HOST, port: Number(process.env.SMTP_PORT) || 587, secure: process.env.SMTP_SECURE === "true", auth: { user: process.env.SMTP_USER, pass: process.env.SMTP_PASS, }, }); interface SendEmailOptions { to: string; subject: string; html: string; text?: string; } export async function sendEmail({ to, subject, html, text }: SendEmailOptions) { try { const info = await transporter.sendMail({ from: process.env.SMTP_FROM || process.env.SMTP_USER, to, subject, html, text, }); log.info("Email sent", { to, subject, messageId: info.messageId }); return { success: true, messageId: info.messageId }; } catch (error) { log.error("Failed to send email", { to, subject, error }); return { success: false, error }; } } export function generateVerificationEmailHtml(url: string, userName: string) { return `

验证您的邮箱地址

您好,${userName}!

感谢您注册。请点击下方按钮验证您的邮箱地址:

验证邮箱

或者复制以下链接到浏览器:

${url}

此链接将在 24 小时后过期。

`; } export function generateResetPasswordEmailHtml(url: string, userName: string) { return `

重置您的密码

您好,${userName}!

我们收到了重置您账户密码的请求。请点击下方按钮设置新密码:

重置密码

或者复制以下链接到浏览器:

${url}

此链接将在 1 小时后过期。

`; }