Insub Kim 82d4981c10
Some checks failed
main-branch-frovide/pipeline/head There was a failure building this commit
이것저것 수정
2025-06-11 22:12:06 +09:00

57 lines
2.1 KiB
TypeScript

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() });
}
}
};