99 lines
2.7 KiB
TypeScript
99 lines
2.7 KiB
TypeScript
import { Request, Response } from 'express';
|
|
import { mailSendSimpleService } from '../services/mailSendSimpleService';
|
|
|
|
export class MailSendSimpleController {
|
|
/**
|
|
* 메일 발송 (단건 또는 소규모)
|
|
*/
|
|
async sendMail(req: Request, res: Response) {
|
|
try {
|
|
console.log('📧 메일 발송 요청 수신:', { accountId: req.body.accountId, to: req.body.to, subject: req.body.subject });
|
|
const { accountId, templateId, to, subject, variables, customHtml } = req.body;
|
|
|
|
// 필수 파라미터 검증
|
|
if (!accountId || !to || !Array.isArray(to) || to.length === 0) {
|
|
console.log('❌ 필수 파라미터 누락');
|
|
return res.status(400).json({
|
|
success: false,
|
|
message: '계정 ID와 수신자 이메일이 필요합니다.',
|
|
});
|
|
}
|
|
|
|
if (!subject) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
message: '메일 제목이 필요합니다.',
|
|
});
|
|
}
|
|
|
|
// 템플릿 또는 커스텀 HTML 중 하나는 있어야 함
|
|
if (!templateId && !customHtml) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
message: '템플릿 또는 메일 내용이 필요합니다.',
|
|
});
|
|
}
|
|
|
|
// 메일 발송
|
|
const result = await mailSendSimpleService.sendMail({
|
|
accountId,
|
|
templateId,
|
|
to,
|
|
subject,
|
|
variables,
|
|
customHtml,
|
|
});
|
|
|
|
if (result.success) {
|
|
return res.json({
|
|
success: true,
|
|
data: result,
|
|
message: '메일이 발송되었습니다.',
|
|
});
|
|
} else {
|
|
return res.status(500).json({
|
|
success: false,
|
|
message: result.error || '메일 발송 실패',
|
|
});
|
|
}
|
|
} catch (error: unknown) {
|
|
const err = error as Error;
|
|
return res.status(500).json({
|
|
success: false,
|
|
message: '메일 발송 중 오류가 발생했습니다.',
|
|
error: err.message,
|
|
});
|
|
}
|
|
}
|
|
|
|
/**
|
|
* SMTP 연결 테스트
|
|
*/
|
|
async testConnection(req: Request, res: Response) {
|
|
try {
|
|
const { accountId } = req.body;
|
|
|
|
if (!accountId) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
message: '계정 ID가 필요합니다.',
|
|
});
|
|
}
|
|
|
|
const result = await mailSendSimpleService.testConnection(accountId);
|
|
|
|
return res.json(result);
|
|
} catch (error: unknown) {
|
|
const err = error as Error;
|
|
return res.status(500).json({
|
|
success: false,
|
|
message: '연결 테스트 실패',
|
|
error: err.message,
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
export const mailSendSimpleController = new MailSendSimpleController();
|
|
|