이메일
Resend와 React Email을 사용한 이메일 시스템의 설정 방법을 안내합니다.
개요
kindie는 Resend로 이메일을 발송하고, React Email로 이메일 템플릿을 관리합니다. 환영 메일, 인증 코드, 결제 확인 등의 트랜잭셔널 이메일을 지원합니다.
Resend 설정
1. 가입 및 API 키 발급
- Resend에 가입
- API Keys에서 새 API 키 생성
- (선택) Domains에서 커스텀 도메인 연결
2. 환경변수 설정
RESEND_API_KEY="re_xxxxxxxxxxxxxxxxxxxxxxxx"3. 발신 이메일 설정
기본 발신 정보는 config.ts에서 관리됩니다:
// config.ts
export const emailConfig = {
from: {
name: "kindie",
email: "noreply@kindie.cc",
},
};커스텀 도메인을 연결하지 않으면 Resend의
onboarding@resend.dev주소로 발송됩니다.
이메일 템플릿
React Email로 작성된 템플릿이 components/email/에 있습니다:
components/email/
├── welcome.tsx 환영 메일
├── verification-code.tsx 인증 코드
├── payment-success.tsx 결제 완료
├── subscription-active.tsx 구독 활성화
└── password-reset.tsx 비밀번호 재설정각 템플릿은 React 컴포넌트로 작성되어 있어 타입 안전하게 관리할 수 있습니다.
이메일 발송
// lib/email/index.ts
import { Resend } from "resend";
import { emailConfig } from "@/config";
const resend = new Resend(process.env.RESEND_API_KEY);
export async function sendEmail({
to,
subject,
react,
}: {
to: string;
subject: string;
react: React.ReactElement;
}) {
return resend.emails.send({
from: `${emailConfig.from.name} <${emailConfig.from.email}>`,
to,
subject,
react,
});
}관련 파일
lib/email/
└── index.ts 이메일 발송 유틸리티
components/email/
├── welcome.tsx 환영 메일 템플릿
├── verification-code.tsx 인증 코드 템플릿
├── payment-success.tsx 결제 완료 템플릿
├── subscription-active.tsx 구독 활성화 템플릿
└── password-reset.tsx 비밀번호 재설정 템플릿
app/api/webhooks/
└── resend/route.ts Resend 웹훅 (바운스, 불만 처리)기능 비활성화
// config.ts
export const features = {
// ...
email: false,
};