LEVEL 59 QUEST
이메일 자동 분류 & 답변 시스템
이메일 자동 분류 & 답변 시스템 — DevFoil 바이브코딩 Stage 13, Lv.59
이메일 자동화가 필요한 이유
하루 50통의 이메일을 AI가 처리한다면
비즈니스를 운영하면 매일 수십 통의 이메일을 처리해야 합니다.
이 중 70% 이상은 패턴이 반복됩니다:
주문 확인, 배송 문의, 환불 요청, 제품 질문 등.
AI가 이메일을 자동 분류하고, 반복 문의에는 자동 답변을 보내고, 중요한 건만 사람에게 에스컬레이션하는 시스템을 만들 수 있습니다.
AI가 이메일을 자동 분류하고, 반복 문의에는 자동 답변을 보내고, 중요한 건만 사람에게 에스컬레이션하는 시스템을 만들 수 있습니다.
시스템 전체 흐름
이메일 수신 (Gmail)
│
▼
Gmail API로 메일 가져오기
│
▼
AI 분류 (Claude/GPT)
├── [주문 문의] → 자동 답변 + DB 조회
├── [배송 문의] → 자동 답변 + 배송 추적
├── [환불 요청] → 담당자에게 에스컬레이션
├── [제품 질문] → AI 자동 답변 (FAQ 기반)
├── [스팸/광고] → 자동 삭제/라벨링
└── [기타/중요] → 담당자에게 알림 (Slack)
Gmail API 연동하기
이메일 가져오기 구현
// npm install googleapis
// lib/gmail.ts
import { google } from 'googleapis';
const oauth2Client = new google.auth.OAuth2(
process.env.GMAIL_CLIENT_ID,
process.env.GMAIL_CLIENT_SECRET,
process.env.GMAIL_REDIRECT_URI
);
oauth2Client.setCredentials({
refresh_token: process.env.GMAIL_REFRESH_TOKEN,
});
const gmail = google.gmail({ version: 'v1', auth: oauth2Client });
// 읽지 않은 이메일 가져오기
export async function getUnreadEmails() {
const res = await gmail.users.messages.list({
userId: 'me',
q: 'is:unread',
maxResults: 20,
});
const emails = [];
for (const msg of res.data.messages || []) {
const detail = await gmail.users.messages.get({
userId: 'me',
id: msg.id!,
});
const headers = detail.data.payload?.headers;
emails.push({
id: msg.id,
from: headers?.find(h => h.name === 'From')?.value,
subject: headers?.find(h => h.name === 'Subject')?.value,
body: getEmailBody(detail.data.payload),
date: headers?.find(h => h.name === 'Date')?.value,
});
}
return emails;
}
🔒
여기까지는 미리보기입니다
이메일 자동 분류 & 답변 시스템
무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.
Google로 3초 만에 시작 →🧵 Threads로 시작무료 공개 강의 둘러보기 (Lv.1~3)무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.