이메일 기반 AI 어시스턴트 구축: FastAPI, Gemini, Postmark 사례
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

이메일 기반 AI 어시스턴트 구축: FastAPI, Gemini, Postmark 활용 사례

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

- 대상: 웹 개발자, AI 프로젝트 개발자, 이메일 인프라 설계자

- 난이도: 중급 (FastAPI와 Gemini API 연동 경험 필요)

핵심 요약

  • 핵심 기술 스택: FastAPI, Gemini, Postmark 활용한 이메일 기반 AI 어시스턴트 구축
  • 핵심 로직: Postmark를 통해 수신된 이메일 → FastAPI 웹훅 처리 → Gemini로 응답 생성 → Postmark로 재전송
  • 주요 이슈 대응: self-email 감지 로직(if sender == "assistant@codewithpravesh.tech":)으로 무한 루프 방지

섹션별 세부 요약

1. 프로젝트 개요 및 워크플로우

  • 이메일 수신 → Postmark 처리 → FastAPI 웹훅 트리거 → Gemini 응답 생성 → Postmark 재전송
  • 사용 예시: assistant@codewithpravesh.tech로 이메일 보내면 30~60초 내 AI 응답 수신

2. 코드 구조 및 핵심 기능

  • main.py: FastAPI 서버 설정 및 webhook 엔드포인트 정의
  • @app.post("/inbound-email")
    async def receive_email(payload: PostmarkInbound):
        sender = payload.From
        if sender == "assistant@codewithpravesh.tech":
            return {"message": "Self-email detected, skipping."}
  • utils.py: Gemini API 연동 및 Postmark 이메일 전송 로직
  • genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
    model = genai.GenerativeModel("models/gemini-2.5-flash-preview-04-17-thinking")

3. 구현 과정 및 이슈

  • Postmark 계정 설정: 공개 도메인 사용 불가 → Dev.to 팀의 DEV++ 멤버십으로 도메인(codewithpravesh.tech) 제공
  • 무한 루프 문제: self-email 감지 로직 추가로 해결
  • 프로덕션 배포: AWS EC2(t2.small, 16GB 스토리지) 사용, Nginx + systemd 서비스 구성

4. 배포 및 운영

  • EC2 설정:

- 인스턴스 타입: t2.small

- 보안 그룹: HTTP/HTTPS(0.0.0.0/0), SSH(사용자 IP)

  • Nginx 구성:

```nginx

server {

listen 80;

server_name app.codewithpravesh.tech;

location / {

proxy_pass http://127.0.0.1:8000;

proxy_set_header Host $host;

}

}

```

  • systemd 서비스: email-assistant 서비스 생성 및 자동 시작 설정

결론

  • 실무 팁:

- 테스트 환경: ngrok을 통해 웹훅 URL 노출

- DNS 설정: MX 레코드(inbound.postmarkapp.com) 추가 및 A 레코드(app.codewithpravesh.tech → EC2 IP) 구성

- 서비스 관리: systemd 서비스 파일 생성으로 재시작 시 자동 실행 가능

  • 프로젝트 핵심: AI 기반 이메일 어시스턴트 구현 시 Postmark + FastAPI + Gemini의 연동이 핵심이며, 자동화된 배포와 이슈 대응 로직이 필수적입니다.