[응용#6] 스케줄러로 매일 자동 리포트 메일 발송 (윈도우·맥)

한줄 요약:
매일 새벽 자동 실행되는 리포트 메일 시스템 만들기!
크롤링 → 요약 → 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 내장 스케줄러에 등록하기 (더 확실함 ✅)

🪟 윈도우 (작업 스케줄러)

  1. 작업 스케줄러 실행 → “작업 만들기”
  2. 트리거: “매일 오전 7시”
  3. 동작: python "C:\path\to\auto_mail.py"
  4. “작업이 실행 중일 때 사용자 로그인 여부와 상관없이 실행” 체크

✅ 이제 PC가 켜져 있으면 매일 자동 실행!


🍎 맥 (launchd)

  1. crontab -e 입력
  2. 아래 한 줄 추가: 0 7 * * * /usr/local/bin/python3 /Users/you/auto_mail.py → 매일 07:00 실행
  3. 저장 후 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에서 리포트 정상 생성 확인
  • yagmail SMTP 로그인 성공
  • schedule 테스트 실행 성공
  • OS 스케줄러 등록 확인
  • 메일 첨부 정상 발송

10. 요약 한 줄

매일 정해진 시간에 자동 리포트 생성 + 이메일 발송까지!
완전 자동화된 파이썬 업무 비서 완성 ✅


이전 강좌 👈 [응용#5] 크롤링 + 요약·키워드 추출: 자동 리포트 생성기
다음 강좌 👉 [응용#7] ChatGPT API로 자연어 리포트 자동 생성하기

댓글 남기기

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.