Some checks failed
main-branch-frovide/pipeline/head There was a failure building this commit
57 lines
2.1 KiB
TypeScript
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() });
|
|
}
|
|
}
|
|
};
|