// ===================================================== // 郵件服務 // ===================================================== import nodemailer from 'nodemailer'; // 郵件配置 const emailConfig = { host: process.env.SMTP_HOST || 'smtp.gmail.com', port: parseInt(process.env.SMTP_PORT || '587'), secure: false, // true for 465, false for other ports auth: { user: process.env.SMTP_USER, pass: process.env.SMTP_PASS, }, }; // 創建郵件傳輸器 const transporter = nodemailer.createTransport(emailConfig); export class EmailService { // 發送密碼重設郵件 static async sendPasswordResetEmail(email: string, resetToken: string, userName: string) { try { const resetUrl = `${process.env.NEXT_PUBLIC_APP_URL || 'http://localhost:3000'}/reset-password?token=${resetToken}`; const mailOptions = { from: `"${process.env.NEXT_PUBLIC_APP_NAME || 'AI 展示平台'}" <${emailConfig.auth.user}>`, to: email, subject: '密碼重設請求', html: `
我們收到了您的密碼重設請求。請點擊下方按鈕來重設您的密碼:
如果按鈕無法點擊,請複製以下連結到瀏覽器中:
${resetUrl}
注意:此連結將在 1 小時後過期,請盡快完成密碼重設。
如果您沒有請求密碼重設,請忽略此郵件。您的密碼將保持不變。
此郵件由 ${process.env.NEXT_PUBLIC_APP_NAME || 'AI 展示平台'} 系統自動發送