import { useTranslation } from '@/i18n'; import { transporter, loadTemplate } from './mailer'; import handlebars from 'handlebars'; interface SendEmailOptions { to: string; subject: string; template: string; // 템플릿 파일명(확장자 제외) context: Record; // 템플릿에 주입할 데이터 cc?: string | string[]; // cc 필드 추가 - 단일 이메일 또는 이메일 배열 attachments?: { // NodeMailer "Attachment" 타입 filename?: string path?: string content?: Buffer | string // ... }[] } export async function sendEmail({ to, subject, template, context, cc, // cc 매개변수 추가 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, cc, // cc 필드 추가 subject, html, attachments }); }