ワンクリックで
add-email-notification
EmailJS 또는 Nodemailer를 이용해 Cloud Functions에서 이메일을 발송하는 기능 추가 가이드.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
EmailJS 또는 Nodemailer를 이용해 Cloud Functions에서 이메일을 발송하는 기능 추가 가이드.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
프로젝트 구조와 네이밍 컨벤션에 맞게 새 React 컴포넌트를 추가하는 가이드
PDF(인쇄 레이아웃) 및 Excel(xlsx 동적 로딩) 파일 내보내기 구현 및 갱신 패턴 가이드
Gemini 3.1 Flash Lite API를 사용한 계기판 OCR 및 증빙 서류 AI 판별 연동 패턴 가이드
Sentry에 잡힌 환경/브라우저/외부 의존성 발 노이즈 에러를 필터링한다. 사용자가 "Sentry 노이즈", "Sentry 에러 필터", "이 에러 무시", "Sentry에 자꾸 뜨는 X 막아줘" 등을 요청할 때 발동한다.
React 단위 테스트(Vitest) 및 E2E 테스트(Playwright) 작성 컨벤션과 Mocking 가이드
Cloud Functions, 프론트엔드 빌드 및 배포 시 발생하는 다양한 오류(Node 버전, 의존성 충돌, 소스맵)의 해결 패턴을 모아둔 가이드.
| name | add-email-notification |
| description | EmailJS 또는 Nodemailer를 이용해 Cloud Functions에서 이메일을 발송하는 기능 추가 가이드. |
차량운행일지 시스템에서는 기관 가입 승인/거절 통보, 관리자 피드백 응답 등에서 이메일 발송 기능을 활용합니다. 이메일 전송 로직을 추가할 때 이 패턴을 준수합니다.
@emailjs/nodejs): 템플릿 관리가 외부 UI에서 필요하거나 클라이언트 측 로직과 유사한 연동이 필요할 때 사용 (예: 기관 신청 승인/거절).nodemailer): 단순 텍스트 기반 이메일, 첨부파일 포함 전송, GMail SMTP 등 백엔드 주도적인 이메일 발송이 필요할 때 사용.sendRejectionEmail.ts 등 참조)import emailjs from '@emailjs/nodejs';
const serviceId = process.env.EMAILJS_SERVICE_ID!;
const templateId = process.env.EMAILJS_REJECTION_TEMPLATE_ID!;
const publicKey = process.env.EMAILJS_PUBLIC_KEY!;
const privateKey = process.env.EMAILJS_PRIVATE_KEY!;
// 이메일 발송
await emailjs.send(
serviceId,
templateId,
{
user_name: '사용자명',
user_email: 'target@example.com',
rejection_reason: '반려 사유 내용'
},
{
publicKey,
privateKey,
}
);
import * as nodemailer from 'nodemailer';
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: process.env.SMTP_USER,
pass: process.env.SMTP_PASS, // 앱 비밀번호
},
});
await transporter.sendMail({
from: '"차량운행일지" <noreply@example.com>',
to: 'target@example.com',
subject: '이메일 제목',
text: '텍스트 본문',
html: '<b>HTML 본문</b>',
});
이메일 연동은 무조건 민감 키(Secret)를 사용하므로 로컬 .env 파일과 Cloud Functions 배포 환경 변수에 모두 키를 설정해야 합니다.
EMAILJS_SERVICE_ID, SMTP_PASS 등이메일 전송 실패가 비즈니스 로직(예: Firestore 데이터 상태 변경) 전체의 실패로 이어지지 않게 하려면, 비동기 호출(await emailjs.send)을 try-catch로 감싸 로그만 남기고 정상 종료시키는 방식을 고려합니다. (성공 여부가 Critical Flow인 경우 제외)