import { useTranslation } from '@/i18n'; import { transporter, loadTemplate } from './mailer'; import handlebars from 'handlebars'; interface SendEmailOptions { to: string; subject: string; template: string; // 템플릿 파일명(확장자 제외) context: Record; // 템플릿에 주입할 데이터 attachments?: { // NodeMailer "Attachment" 타입 filename?: string path?: string content?: Buffer | string // ... }[] } export async function sendEmail({ to, subject, template, context, attachments = []}: SendEmailOptions) { const { t, i18n } = await useTranslation(context.language ?? "en", "translation"); handlebars.registerHelper("t", function (key: string, options: any) { // 여기서 i18n은 로컬 인스턴스 return i18n.t(key, options.hash || {}); }); const html = loadTemplate(template, context); await transporter.sendMail({ from: `"${process.env.Email_From_Name}" <${process.env.Email_From_Address}>`, to, subject, html, attachments }); }