import { fail } from '@sveltejs/kit'; const nodemailer = require("nodemailer"); import { BREVO_SMTP_HOST, BREVO_SMTP_PORT, BREVO_SMTP_LOGIN, BREVO_SMTP_PASSWORD, BREVO_SENDER_EMAIL, BREVO_SENDER_NAME } from '$env/static/private'; export const actions = { default: async ({ request }) => { const formData = await request.formData(); const to = formData.get('to'); const subject = formData.get('subject'); const htmlContent = formData.get('htmlContent'); // 필수 필드 확인 if (!to || !subject || !htmlContent) { return fail(400, { to: to?.toString(), subject: subject?.toString(), htmlContent: htmlContent?.toString(), error: '필수 필드가 누락되었습니다: to, subject, htmlContent' }); } const transporter = nodemailer.createTransport({ host: BREVO_SMTP_HOST, port: parseInt(BREVO_SMTP_PORT || '587', 10), secure: parseInt(BREVO_SMTP_PORT || '587', 10) === 465, // true for 465, false for other ports (587 uses STARTTLS) auth: { user: BREVO_SMTP_LOGIN, pass: BREVO_SMTP_PASSWORD, }, }); const mailOptions = { from: `"${BREVO_SENDER_NAME || 'Frovide'}" <${BREVO_SENDER_EMAIL}>`, to: to.toString(), subject: subject.toString(), html: htmlContent.toString(), }; try { const info = await transporter.sendMail(mailOptions); console.log('이메일 발송 성공: ' + info.messageId); return { success: true, message: '이메일이 성공적으로 발송되었습니다.', messageId: info.messageId }; } catch (error) { console.error('Nodemailer 이메일 발송 오류:', error); // @ts-ignore return fail(500, { error: '이메일 발송에 실패했습니다.', details: error.message, to: to.toString(), subject: subject.toString(), htmlContent: htmlContent.toString() }); } } };