import { createError } from 'h3' import { getRuntimeEnvValue } from './runtime-env' /** * Resend가 서버 설정으로 사용 가능한지 * @param {{ resendApiKey?: string, resendFromEmail?: string }} config - 런타임 설정 * @returns {boolean} */ export const isResendConfigured = (config) => { const key = getRuntimeEnvValue('RESEND_API_KEY', 'resendApiKey', String(config?.resendApiKey || '')).trim() const from = getRuntimeEnvValue('RESEND_FROM_EMAIL', 'resendFromEmail', String(config?.resendFromEmail || '')).trim() return Boolean(key && from) } /** * Resend REST API로 이메일을 발송한다. * @param {{ apiKey: string, from: string, to: string, subject: string, html: string }} input - 발송 입력 * @returns {Promise} */ export const sendResendEmail = async (input) => { const res = await fetch('https://api.resend.com/emails', { method: 'POST', headers: { Authorization: `Bearer ${input.apiKey}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ from: input.from, to: [input.to], subject: input.subject, html: input.html }) }) if (!res.ok) { const detail = await res.text().catch(() => '') throw createError({ statusCode: 502, message: '이메일 발송에 실패했습니다. Resend 발신 주소·도메인 설정을 확인해 주세요.', data: process.env.NODE_ENV === 'development' && detail ? { detail } : undefined }) } }