import nodemailer from 'nodemailer'; import handlebars from 'handlebars'; import fs from 'fs'; import path from 'path'; import i18next from 'i18next'; // Nodemailer Transporter 생성 const transporter = nodemailer.createTransport({ host: process.env.Email_Host, port: parseInt(process.env.Email_Port || '465'), secure: process.env.Email_Secure === 'true', auth: { user: process.env.Email_User_Name, pass: process.env.Email_Password, }, }); // 템플릿 로더 함수 - 단순화된 버전 function loadTemplate(templateName: string, data: Record) { const templatePath = path.join(process.cwd(), 'lib', 'mail', 'templates', `${templateName}.hbs`); const source = fs.readFileSync(templatePath, 'utf8'); const template = handlebars.compile(source); return template(data); } // i18next 헬퍼 등록 handlebars.registerHelper('t', function(key: string, options: { hash?: Record }) { // options.hash에는 Handlebars에서 넘긴 named parameter들이 들어있음 return i18next.t(key, options.hash || {}); }); export { transporter, loadTemplate };