483c1ac6e749e01edb4dcb11021094d2f40b3778
- OAuth 동의 화면 설정 단계 추가 - 테스트 사용자 추가 방법 명시 - 403 access_denied 오류 해결 방법 추가 - 트러블슈팅 섹션 강화 - '앱이 확인되지 않음' 경고 대처법 추가 Fixes #1 (403 access_denied error)
📧 Gmail 자동화 RPA (Gmail Automation RPA)
Gmail API를 활용하여 이메일을 자동으로 분류하고 답장하는 RPA 프로그램입니다.
🎯 프로젝트 개요
해결하는 문제
- 매일 쏟아지는 수백 개의 이메일 관리
- 중요한 메일을 놓치는 문제
- 반복적인 답장 작성 시간 낭비
- 업무 시간 외 문의 대응
주요 기능
✅ 자동 분류: 키워드/발신자 기반 라벨링 ✅ 자동 답장: 조건별 자동 응답 ✅ 스마트 필터링: 업무/마케팅/개인 구분 ✅ 통계 리포트: 이메일 처리 현황 확인 ✅ 커스터마이징: JSON 설정으로 쉬운 규칙 변경
🚀 빠른 시작
1. Google Cloud Console 설정
Step 1: 프로젝트 생성
- https://console.cloud.google.com 접속
- 새 프로젝트 생성: "Gmail Automation"
- 프로젝트 선택
Step 2: Gmail API 활성화
- 좌측 메뉴 → "API 및 서비스" → "라이브러리"
- "Gmail API" 검색
- "사용" 클릭
Step 3: OAuth 동의 화면 설정 ⭐ 중요!
- "API 및 서비스" → "OAuth 동의 화면"
- User Type: "외부 (External)" 선택 → "만들기"
- 앱 정보 입력:
- 앱 이름:
Gmail Automation RPA - 사용자 지원 이메일: 본인 이메일
- 개발자 연락처 이메일: 본인 이메일
- "저장 후 계속" 클릭
- 앱 이름:
- 범위 추가:
- "범위 추가 또는 삭제" 클릭
- 다음 범위 검색 및 체크:
https://www.googleapis.com/auth/gmail.modifyhttps://www.googleapis.com/auth/gmail.sendhttps://www.googleapis.com/auth/gmail.labels
- "업데이트" → "저장 후 계속"
- 테스트 사용자 추가:
- "+ADD USERS" 클릭
- 본인 Gmail 주소 입력 (예: bgg8988@gmail.com)
- "추가" → "저장 후 계속"
- "대시보드로 돌아가기"
Step 4: OAuth 2.0 클라이언트 ID 생성
- "API 및 서비스" → "사용자 인증 정보"
- "+사용자 인증 정보 만들기" → "OAuth 클라이언트 ID"
- 애플리케이션 유형: "데스크톱 앱"
- 이름: "Gmail RPA Client"
- "만들기" 클릭
- credentials.json 다운로드 ⭐
- 프로젝트 폴더에 복사
2. 설치
# 저장소 클론
git clone https://gitea.gahusb.synology.me/gahusb/gmail-automation-rpa.git
cd gmail-automation-rpa
# 의존성 설치
pip install -r requirements.txt
# credentials.json 파일 복사
# (Google Cloud Console에서 다운로드한 파일)
3. 실행
# 첫 실행 (인증 필요)
python gmail_automation.py
# 브라우저가 열리면 Google 계정 로그인
# → Gmail 접근 권한 승인
📋 사용법
메뉴
1. 이메일 자동 분류 및 답장
→ 읽지 않은 이메일을 분류하고 조건에 맞으면 자동 답장
2. 통계 리포트 보기
→ 라벨별 이메일 개수 확인
3. 종료
실행 화면
==================================================
📧 Gmail 자동화 RPA 실행
==================================================
📥 읽지 않은 이메일 확인 중...
📨 총 15개의 읽지 않은 이메일 발견
------------------------------------------------------------
1. 처리 중...
제목: [업무] 프로젝트 진행 현황 공유
발신자: manager@company.com
📁 분류: 업무/중요
2. 처리 중...
제목: 새로운 프로모션! 지금 할인받으세요
발신자: marketing@shop.com
📁 분류: 마케팅
3. 처리 중...
제목: 문의드립니다
발신자: client@gmail.com
📁 분류: 고객 문의
✉️ 자동 답장 전송됨
==================================================
✅ 처리 완료!
📊 처리: 15건
📁 분류: 15건
✉️ 답장: 3건
==================================================
⚙️ 설정 (config.json)
분류 규칙 설정
{
"classification_rules": [
{
"name": "업무",
"keywords": ["회의", "프로젝트", "업무", "보고"],
"from_domains": ["company.com"],
"label": "업무/중요",
"priority": "high"
},
{
"name": "마케팅",
"keywords": ["광고", "프로모션", "할인", "무료"],
"label": "마케팅"
}
]
}
자동 답장 규칙
{
"auto_reply_rules": [
{
"condition": "업무 시간 외",
"hours": {"start": 18, "end": 9},
"template": "안녕하세요.\n\n현재 업무 시간 외입니다.\n다음 영업일(평일 09:00~18:00)에 확인 후 답변드리겠습니다.\n\n감사합니다."
},
{
"condition": "키워드 기반",
"keywords": ["견적", "가격", "비용"],
"template": "견적 문의 감사합니다.\n\n상세한 견적은 24시간 내 이메일로 보내드리겠습니다.\n\n감사합니다."
}
]
}
🎨 사용 사례
1. 업무 메일 자동 분류
상황: 매일 100개 이상의 메일 수신
해결: 업무/마케팅/개인으로 자동 분류
효과: 메일 정리 시간 2시간 → 0분
2. 업무 시간 외 자동 답장
상황: 밤 10시에 문의 메일 수신
해결: "다음 영업일에 답변드립니다" 자동 답장
효과: 고객 만족도 향상, 빠른 응대
3. 고객 문의 자동 분류
상황: 견적/기술/일반 문의가 섞여서 옴
해결: 키워드 기반 자동 분류 및 담당자별 라벨링
효과: 업무 효율 200% 증가
🛠 커스터마이징
새로운 분류 규칙 추가
config.json 수정:
{
"classification_rules": [
{
"name": "VIP 고객",
"from_domains": ["vip-client.com"],
"keywords": ["긴급", "중요"],
"label": "VIP/긴급",
"priority": "urgent"
}
]
}
Python 코드에서 사용
from gmail_automation import GmailAutomation
# 자동화 객체 생성
automation = GmailAutomation(config_file="custom_config.json")
# 이메일 처리
automation.process_emails()
# 리포트 생성
automation.generate_report()
📊 효과 측정
| 항목 | 수작업 | 자동화 | 절감 |
|---|---|---|---|
| 이메일 분류 시간 | 2시간/일 | 0분 | 100% |
| 답장 작성 시간 | 1시간/일 | 0분 | 100% |
| 중요 메일 놓침 | 월 5건 | 0건 | 100% |
| 업무 생산성 | 기준 | +150% | - |
월간 효과:
- 시간 절감: 60시간
- 비용 절감: 60만원 (시급 1만원 기준)
- 업무 효율: 150% 증가
📂 프로젝트 구조
gmail-automation-rpa/
├── gmail_automation.py # 메인 프로그램
├── gmail_auth.py # Gmail API 인증
├── email_classifier.py # 이메일 분류 로직
├── auto_reply.py # 자동 답장 로직
├── config.json # 설정 파일
├── requirements.txt # 의존성
├── README.md # 이 파일
├── credentials.json # Google OAuth (사용자가 추가)
└── token.pickle # 인증 토큰 (자동 생성)
🔒 보안
인증 정보 관리
credentials.json: Google Cloud Console에서 다운로드token.pickle: 자동 생성되는 인증 토큰- 절대 Git에 업로드하지 마세요! (.gitignore에 추가됨)
권한 범위
이 프로그램이 요청하는 권한:
- ✅ 이메일 읽기
- ✅ 라벨 추가/수정
- ✅ 이메일 전송
- ❌ 이메일 삭제 (권한 없음)
🐛 트러블슈팅
오류: 403 access_denied (가장 흔한 오류)
증상:
오류 403: access_denied
원인:
- OAuth 동의 화면에서 테스트 사용자로 등록되지 않음
해결:
- Google Cloud Console → "OAuth 동의 화면"
- "테스트 사용자" 섹션에서 "+ADD USERS"
- 본인 Gmail 주소 입력 (예: bgg8988@gmail.com)
- "추가" 클릭
- 기존 token.pickle 삭제:
rm token.pickle - 프로그램 재실행:
python gmail_automation.py - 브라우저에서 "앱이 확인되지 않음" 경고가 나오면:
- "고급" 클릭
- "Gmail Automation RPA(으)로 이동" 클릭
- 권한 승인
"credentials.json 파일이 없습니다"
- Google Cloud Console에서 OAuth 클라이언트 ID 생성
- credentials.json 다운로드
- 프로젝트 폴더에 복사
"인증에 실패했습니다"
# token.pickle 삭제 후 재인증
rm token.pickle
python gmail_automation.py
"API 할당량 초과"
- Gmail API는 일일 1,000,000,000 quota
- 일반 사용으로는 초과 불가능
- 문제 발생 시 Google Cloud Console에서 확인
"앱이 확인되지 않음" 경고
- 정상적인 현상입니다 (테스트 모드)
- "고급" → "이동" 클릭하면 사용 가능
- 개인 사용이므로 문제없음
💡 추가 기능 아이디어
- GUI 버전 (tkinter/PyQt)
- 웹 대시보드
- 슬랙/텔레그램 알림 연동
- AI 기반 스마트 분류
- 첨부파일 자동 다운로드
- 이메일 예약 발송
- 스케줄러 (매시간 자동 실행)
📞 문의
프로젝트 관련 문의 또는 커스터마이징 요청:
- 이메일: bgg8988@gmail.com
- 포트폴리오: https://jaengseung-made.com
- 전화: 010-3907-1392
📄 라이선스
MIT License - 자유롭게 사용, 수정, 배포 가능합니다.
Made by 쟁승메이드 | 더 많은 RPA 프로젝트 보기
Description
Languages
Python
100%