# ๐Ÿ“ง Gmail ์ž๋™ํ™” RPA (Gmail Automation RPA) Gmail API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด๋ฉ”์ผ์„ ์ž๋™์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜๊ณ  ๋‹ต์žฅํ•˜๋Š” RPA ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ## ๐ŸŽฏ ํ”„๋กœ์ ํŠธ ๊ฐœ์š” ### ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ - ๋งค์ผ ์Ÿ์•„์ง€๋Š” ์ˆ˜๋ฐฑ ๊ฐœ์˜ ์ด๋ฉ”์ผ ๊ด€๋ฆฌ - ์ค‘์š”ํ•œ ๋ฉ”์ผ์„ ๋†“์น˜๋Š” ๋ฌธ์ œ - ๋ฐ˜๋ณต์ ์ธ ๋‹ต์žฅ ์ž‘์„ฑ ์‹œ๊ฐ„ ๋‚ญ๋น„ - ์—…๋ฌด ์‹œ๊ฐ„ ์™ธ ๋ฌธ์˜ ๋Œ€์‘ ### ์ฃผ์š” ๊ธฐ๋Šฅ โœ… **์ž๋™ ๋ถ„๋ฅ˜**: ํ‚ค์›Œ๋“œ/๋ฐœ์‹ ์ž ๊ธฐ๋ฐ˜ ๋ผ๋ฒจ๋ง โœ… **์ž๋™ ๋‹ต์žฅ**: ์กฐ๊ฑด๋ณ„ ์ž๋™ ์‘๋‹ต โœ… **์Šค๋งˆํŠธ ํ•„ํ„ฐ๋ง**: ์—…๋ฌด/๋งˆ์ผ€ํŒ…/๊ฐœ์ธ ๊ตฌ๋ถ„ โœ… **ํ†ต๊ณ„ ๋ฆฌํฌํŠธ**: ์ด๋ฉ”์ผ ์ฒ˜๋ฆฌ ํ˜„ํ™ฉ ํ™•์ธ โœ… **์ปค์Šคํ„ฐ๋งˆ์ด์ง•**: JSON ์„ค์ •์œผ๋กœ ์‰ฌ์šด ๊ทœ์น™ ๋ณ€๊ฒฝ ## ๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘ ### 1. Google Cloud Console ์„ค์ • #### Step 1: ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ 1. https://console.cloud.google.com ์ ‘์† 2. ์ƒˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ: "Gmail Automation" 3. ํ”„๋กœ์ ํŠธ ์„ ํƒ #### Step 2: Gmail API ํ™œ์„ฑํ™” 1. ์ขŒ์ธก ๋ฉ”๋‰ด โ†’ "API ๋ฐ ์„œ๋น„์Šค" โ†’ "๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ" 2. "Gmail API" ๊ฒ€์ƒ‰ 3. "์‚ฌ์šฉ" ํด๋ฆญ #### Step 3: OAuth 2.0 ํด๋ผ์ด์–ธํŠธ ID ์ƒ์„ฑ 1. "API ๋ฐ ์„œ๋น„์Šค" โ†’ "์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด" 2. "+์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋งŒ๋“ค๊ธฐ" โ†’ "OAuth ํด๋ผ์ด์–ธํŠธ ID" 3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์œ ํ˜•: "๋ฐ์Šคํฌํ†ฑ ์•ฑ" 4. ์ด๋ฆ„: "Gmail RPA Client" 5. "๋งŒ๋“ค๊ธฐ" ํด๋ฆญ 6. **credentials.json ๋‹ค์šด๋กœ๋“œ** โญ 7. ํ”„๋กœ์ ํŠธ ํด๋”์— ๋ณต์‚ฌ ### 2. ์„ค์น˜ ```bash # ์ €์žฅ์†Œ ํด๋ก  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. ์‹คํ–‰ ```bash # ์ฒซ ์‹คํ–‰ (์ธ์ฆ ํ•„์š”) 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) ### ๋ถ„๋ฅ˜ ๊ทœ์น™ ์„ค์ • ```json { "classification_rules": [ { "name": "์—…๋ฌด", "keywords": ["ํšŒ์˜", "ํ”„๋กœ์ ํŠธ", "์—…๋ฌด", "๋ณด๊ณ "], "from_domains": ["company.com"], "label": "์—…๋ฌด/์ค‘์š”", "priority": "high" }, { "name": "๋งˆ์ผ€ํŒ…", "keywords": ["๊ด‘๊ณ ", "ํ”„๋กœ๋ชจ์…˜", "ํ• ์ธ", "๋ฌด๋ฃŒ"], "label": "๋งˆ์ผ€ํŒ…" } ] } ``` ### ์ž๋™ ๋‹ต์žฅ ๊ทœ์น™ ```json { "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` ์ˆ˜์ •: ```json { "classification_rules": [ { "name": "VIP ๊ณ ๊ฐ", "from_domains": ["vip-client.com"], "keywords": ["๊ธด๊ธ‰", "์ค‘์š”"], "label": "VIP/๊ธด๊ธ‰", "priority": "urgent" } ] } ``` ### Python ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ ```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์— ์ถ”๊ฐ€๋จ) ### ๊ถŒํ•œ ๋ฒ”์œ„ ์ด ํ”„๋กœ๊ทธ๋žจ์ด ์š”์ฒญํ•˜๋Š” ๊ถŒํ•œ: - โœ… ์ด๋ฉ”์ผ ์ฝ๊ธฐ - โœ… ๋ผ๋ฒจ ์ถ”๊ฐ€/์ˆ˜์ • - โœ… ์ด๋ฉ”์ผ ์ „์†ก - โŒ ์ด๋ฉ”์ผ ์‚ญ์ œ (๊ถŒํ•œ ์—†์Œ) ## ๐Ÿ› ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ### "credentials.json ํŒŒ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค" 1. Google Cloud Console์—์„œ OAuth ํด๋ผ์ด์–ธํŠธ ID ์ƒ์„ฑ 2. credentials.json ๋‹ค์šด๋กœ๋“œ 3. ํ”„๋กœ์ ํŠธ ํด๋”์— ๋ณต์‚ฌ ### "์ธ์ฆ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค" ```bash # 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 ํ”„๋กœ์ ํŠธ ๋ณด๊ธฐ](https://jaengseung-made.com)