한줄 요약:
매일 새벽 자동 실행되는 리포트 메일 시스템 만들기!
크롤링 → 요약 → CSV/MD 리포트 생성 후,
파이썬이 알아서 이메일로 전송 💌
1. 목표
- 자동 리포트 스크립트를 매일 정해진 시각에 실행
- **SMTP(이메일 전송)**으로 결과 파일 첨부
- 윈도우·맥 환경 모두 스케줄링 설정
2. 준비
1️⃣ 자동 생성 리포트 스크립트: 이전 강좌의 auto_report.py
2️⃣ 메일 발송용 추가 패키지 설치
pip install schedule yagmail
schedule: 파이썬 스케줄러yagmail: Gmail 등 SMTP 메일 쉽게 전송
3. 1️⃣ 메일 전송 함수
import yagmail
import time
import schedule
SENDER = "your_email@gmail.com"
APP_PASSWORD = "your_app_password" # Gmail 보안 설정에서 발급 (2단계 인증 필요)
RECIPIENT = "report_receiver@example.com"
def send_report_email():
yag = yagmail.SMTP(SENDER, APP_PASSWORD)
subject = f"[자동리포트] 웹 요약 리포트 ({time.strftime('%Y-%m-%d')})"
body = "오늘의 웹 자동 요약 리포트입니다. 첨부된 파일을 확인해주세요. 😊"
attachments = ["report.csv", "report.md"]
yag.send(
to=RECIPIENT,
subject=subject,
contents=body,
attachments=attachments
)
print(f"✅ 메일 전송 완료 ({time.strftime('%H:%M:%S')})")
4. 2️⃣ 스케줄러 설정
방법 ① 파이썬 내부 스케줄러로 매일 실행
def job():
import auto_report # 이전 강좌 코드 임포트
auto_report.main() # 리포트 생성
send_report_email() # 메일 전송
# 매일 아침 7시에 실행
schedule.every().day.at("07:00").do(job)
print("🕒 자동 리포트 시스템 실행 중...")
while True:
schedule.run_pending()
time.sleep(60)
💡 파이썬 프로세스가 백그라운드에서 계속 돌아가며,
매일 정해진 시간에auto_report실행 후 메일을 보냄.
방법 ② OS 내장 스케줄러에 등록하기 (더 확실함 ✅)
🪟 윈도우 (작업 스케줄러)
- 작업 스케줄러 실행 → “작업 만들기”
- 트리거: “매일 오전 7시”
- 동작:
python "C:\path\to\auto_mail.py" - “작업이 실행 중일 때 사용자 로그인 여부와 상관없이 실행” 체크
✅ 이제 PC가 켜져 있으면 매일 자동 실행!
🍎 맥 (launchd)
crontab -e입력- 아래 한 줄 추가:
0 7 * * * /usr/local/bin/python3 /Users/you/auto_mail.py→ 매일 07:00 실행 - 저장 후
crontab -l로 등록 확인
5. 전체 통합 예시: auto_mail.py
import time
import schedule
import yagmail
import auto_report # 이전 강좌의 report 생성기 임포트
SENDER = "your_email@gmail.com"
APP_PASSWORD = "your_app_password"
RECIPIENT = "receiver@example.com"
def send_report_email():
yag = yagmail.SMTP(SENDER, APP_PASSWORD)
subject = f"[자동리포트] 웹 요약 리포트 ({time.strftime('%Y-%m-%d')})"
body = "오늘의 웹 자동 리포트입니다. 첨부된 CSV/MD 파일을 확인하세요. 😊"
attachments = ["report.csv", "report.md"]
yag.send(to=RECIPIENT, subject=subject, contents=body, attachments=attachments)
print("✅ 메일 전송 완료")
def job():
print("📄 리포트 생성 시작...")
auto_report.main() # 이전 코드의 main() 실행
send_report_email()
# 매일 오전 7시 실행
schedule.every().day.at("07:00").do(job)
print("🚀 자동 리포트 메일 시스템 실행 중...")
while True:
schedule.run_pending()
time.sleep(60)
6. Gmail 앱 비밀번호 발급법 (2단계 인증 필수)
1️⃣ Google 계정 관리
2️⃣ 보안 → 2단계 인증 활성화
3️⃣ 앱 비밀번호(App Password) 발급
- 앱 선택: “메일”
- 기기 선택: “기타 (Python Script)”
4️⃣ 16자리 비밀번호 복사 → 코드의APP_PASSWORD에 입력
📩 Gmail 외에도 Outlook, Naver, Daum 등 SMTP 제공 서비스 모두 가능
(SMTP 주소/포트는 각 서비스 문서 참조)
7. 결과 예시 메일
제목: [자동리포트] 웹 요약 리포트 (2025-11-10)
본문:
오늘의 웹 자동 리포트입니다.
첨부된 파일에서 주요 뉴스 요약과 키워드를 확인하세요.
첨부파일:
- report.csv
- report.md
💡 실제 업무 리포트, 블로그 자동 요약, 트렌드 분석 등에도 활용 가능.
8. 주의사항
| 항목 | 설명 |
|---|---|
| Gmail 보안 | 앱 비밀번호를 코드에 직접 저장하지 말고 .env로 분리 |
| 실행 중단 | schedule은 Python 프로세스가 종료되면 중단됨 |
| OS 스케줄러 | PC 절전·재부팅 시에도 자동 실행되려면 등록 필요 |
| 첨부파일 크기 | Gmail 첨부 제한(25MB), 초과 시 Drive 링크 전송 권장 |
9. 최종 점검 체크리스트
auto_report.py에서 리포트 정상 생성 확인yagmailSMTP 로그인 성공schedule테스트 실행 성공- OS 스케줄러 등록 확인
- 메일 첨부 정상 발송
10. 요약 한 줄
매일 정해진 시간에 자동 리포트 생성 + 이메일 발송까지!
완전 자동화된 파이썬 업무 비서 완성 ✅
이전 강좌 👈 [응용#5] 크롤링 + 요약·키워드 추출: 자동 리포트 생성기
다음 강좌 👉 [응용#7] ChatGPT API로 자연어 리포트 자동 생성하기