n8n 한국어 교재 · Ch.9

Gmail · SMTP 자동 발송

워크플로의 결과를 "사람한테 알리는" 가장 흔한 길. Gmail 계정 또는 SMTP 서버 둘 중 하나 등록하면 평생 작동.

이메일 보내기 일러스트 — 받는 사람·제목·본문 영역

워크플로 어디선가 데이터를 만들거나 받았으면, 보통 "누군가에게 알림" 으로 끝납니다. 그게 Slack 이면 Ch.10, 메일이면 이 챕터. 메일은 두 길 — Gmail (개인 계정 OAuth) 또는 SMTP (회사 메일·SendGrid·Mailgun 같은 외부 SMTP).

Gmail vs SMTP — 어느 게 나에게 맞나

방식장점제약
GmailOAuth 한 번이면 끝, 무료, 본인 계정에서 발송하루 500통 한도, 회사 메일 안 됨
SMTP발송량 제한 ↑, 자체 도메인 메일, 비즈니스용host·port·user·pass 4개 입력, 발송 한도 SMTP 서비스에 따름
SendGrid·Mailgun월 100만 통+, 통계 대시보드, 도메인 인증월 $15+, 도메인 SPF·DKIM 설정 필요

처음엔 Gmail 권장. 학습·소규모 자동화에 충분. 일 50통 이상 보내거나 회사 도메인이면 SMTP, 일 1만+ 면 SendGrid 같은 전용 서비스.

Send Email 노드 검색 결과 — n8n 의 What happens next 패널
이전 노드 우측 + → "send email" 검색. n8n 의 내장 SMTP 노드가 첫 결과로 뜹니다.

n8n 에는 메일 관련 노드 3종:

  • Send Email — 일반 SMTP 발송. host·port·user·pass 입력.
  • Gmail — Google OAuth, Gmail 계정 그대로.
  • Email Trigger (IMAP) — 이건 받는 쪽. 메일 수신 감지.

1단계 — Gmail OAuth 자격증명

1
Gmail 노드 추가 → Credential 만들기

+ 클릭 → "gmail" 검색 → Gmail 노드. 패널의 Credential to connect withCreate new credential.

2
셀프호스팅이면 Google Cloud OAuth client 만들기

Ch.8 의 Google Sheets 와 정확히 동일한 절차. Cloud Console → APIs & Services → Credentials → OAuth client ID. Redirect URI 만 다르게 — /rest/oauth2-credential/callback 동일.

이미 Sheets credentials 이 있으면 같은 OAuth client 재사용 가능. n8n 안에서 "Gmail OAuth2" 라는 새 자격증명으로 만들되, Client ID·Secret 은 동일하게 입력.

3
Scope 권한 추가

Google Cloud Console 의 OAuth consent screen → Scopes 에 gmail.send (또는 gmail.modify 전체 권한) 추가. Sheets 만 등록한 상태면 메일 발송 권한이 없어서 "permission denied" 에러.

2단계 — 메일 보내기 실전

Gmail 노드 Operation: Send Email To: ={{ $json.recipient }} Subject: ={{ "안녕 " + $json.name + "님 — 결제 완료" }} Email Type: HTML Message: (아래 HTML 템플릿)

HTML 본문 템플릿:

<!-- 표현식 안에서 멀티라인 HTML 가능 (역따옴표 사용) --> ={{ `<h2>${$json.name}님 안녕하세요</h2> <p>방금 ${$json.amount}원 결제가 완료됐습니다.</p> <p>감사합니다 :)</p>` }}

표현식 안에서 역따옴표(`)${...} 조합을 쓰면 멀티라인 + 변수 삽입이 깔끔. 위 한 줄이 다음 노드 입력의 name·amount 값으로 채워집니다.

3단계 — 첨부파일 보내기

첨부는 두 가지 — ① 이전 노드의 binary 데이터 (예: HTTP Request 로 PDF 받은 거), ② n8n 내부 자체 파일.

HTTP Request (Get PDF from URL) Response → Download File ↓ Gmail Operation: Send Email Attachments → data (이전 노드의 binary 키 이름)

Attachments 필드에 data 라고 적으면 n8n 이 이전 노드의 binary[data] 를 첨부로 사용. 여러 첨부면 콤마로 (data,data2,data3).

흔한 실수 — 첨부 안 됨
HTTP Request 노드의 Response → Download File 토글이 꺼져 있으면 데이터가 binary 가 아니라 JSON. Gmail 노드가 binary 만 첨부 인식하므로 실패. 다운로드 모드 켜기.

4단계 — 대량 발송 + 안전망

Gmail 은 일 500통 한도. 1,000 명에게 보내려면 SendGrid 같은 전용 서비스 또는 SMTP 릴레이 필요. n8n 워크플로에서는 동일 — 노드 종류만 바꿈.

운영 패턴 — Bounce 처리
발송 실패하면 Error Trigger 워크플로가 받음 (Ch.16). Error 발생 행은 Google Sheets 의 "발송실패" 컬럼에 마킹 → 다음 cron 에서 재시도. 이 패턴이 안정 운영의 핵심.

다음 Ch.10 — Slack · Discord 알림. 메일보다 즉시성 ↑ 인 채널. webhook URL 한 줄로 끝.

n8n 한국어 교재 · Ch.9 완료

다음 편 → Ch.10 Slack · Discord 알림

전체 시리즈 보기

© 2026 주나이테크(주) @JUNAITECH