ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 📩 파이썬으로 자동 이메일 리포트 전송하기
    기술개발 2025. 6. 16. 21:39

    지금까지 시리즈에서는 Python으로 주식 데이터를 분석하고 시각화하는 리포트를 자동 생성하는 방법을 다뤘습니다.

    이번 글에서는 여기서 한 발 더 나아가,
    생성된 리포트를 이메일로 자동 전송하는 방법을 소개합니다.

    • 📬 매일 아침 최신 리포트를 이메일로 받고 싶다면?
    • 🗂️ 여러 명에게 동시에 이메일로 리포트를 공유하고 싶다면?

    이제 Python으로 간단히 해결해봅시다!


    ✅ 이번 글의 목표

    • 생성된 리포트(CSV, PDF 등)를 자동으로 이메일 전송
    • Gmail SMTP를 활용한 간단한 이메일 발송 자동화
    • 크론/작업 스케줄러로 완전 자동화

    🔧 1단계: 이메일 발송 기본 세팅

    Python의 내장 라이브러리인 smtplib을 사용해 이메일을 보냅니다.

    import smtplib
    from email.message import EmailMessage
    
    # 기본 설정
    EMAIL_ADDRESS = 'your-email@gmail.com'
    EMAIL_PASSWORD = 'your-password'  # 앱 비밀번호 사용 권장
    
    msg = EmailMessage()
    msg['Subject'] = '오늘의 주식 리포트'
    msg['From'] = EMAIL_ADDRESS
    msg['To'] = 'recipient@example.com'
    msg.set_content('안녕하세요, 오늘의 주식 리포트를 첨부했습니다.')

    📎 2단계: 리포트 파일 첨부하기 (CSV, PDF 등)

    생성된 CSV 또는 PDF를 이메일에 첨부할 수 있습니다.

    # 파일 첨부
    files = ['weekly_return.csv', 'multi_stock_return_graph.png']
    
    for file in files:
        with open(file, 'rb') as f:
            file_data = f.read()
            file_name = f.name
    
        msg.add_attachment(file_data, maintype='application',
                           subtype='octet-stream', filename=file_name)
    • 여러 파일도 동시에 첨부 가능
    • PDF, PNG, CSV 등 다양한 형식을 지원

    📧 3단계: 이메일 발송하기 (Gmail SMTP 사용)

    Gmail SMTP 서버를 통해 실제로 이메일을 발송합니다.

    with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
        smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
        smtp.send_message(msg)
    
    print("✅ 이메일 발송 완료!")

    주의: Gmail은 보안상 이유로 앱 비밀번호 사용을 권장합니다.


    🚀 4단계: 자동화 설정 (Cron / 작업 스케줄러)

    작성한 이메일 발송 스크립트를 매일 아침 자동으로 실행하도록 설정합니다.

    • Linux/Mac: cron
    • Windows: 작업 스케줄러

    크론 예시:

    crontab -e

     

    아래 내용을 추가하면 매일 오전 8시에 자동 실행됩니다:

    0 8 * * * /usr/bin/python3 /경로/리포트_발송.py

    🔑 Gmail 앱 비밀번호 발급 방법 (필수)

    파이썬으로 Gmail을 통해 이메일을 자동 발송하려면, Gmail에서 제공하는 **앱 비밀번호(App Password)**가 필요합니다.

    보안상의 이유로 Gmail은 일반 비밀번호 대신 앱 비밀번호 사용을 요구합니다.

    중요: 앱 비밀번호 발급을 위해서는 Google 계정에 2단계 인증이 반드시 활성화되어 있어야 합니다.


    📌 1단계: Google 계정 로그인 후 보안 메뉴로 이동

    • Google 계정 페이지로 이동 후 로그인합니다.
    • 로그인 후 왼쪽 메뉴에서 [보안] 탭을 클릭합니다.

    📌 2단계: 2단계 인증 활성화 (필수)

    • 보안 페이지에서 **「Google에 로그인」 → 「2단계 인증」**을 클릭합니다.
    • 2단계 인증이 이미 활성화 되어 있다면, 이 단계는 넘어가셔도 됩니다.

    📌 3단계: 앱 비밀번호 메뉴 접속하기

    • 다시 「Google에 로그인」 섹션에서 **「앱 비밀번호」**를 클릭합니다.

    📌 4단계: 앱 비밀번호 생성하기

    • **「앱 선택」**에서 **「기타 (맞춤 이름)」**을 선택합니다.
    • 아래 입력창에 용도를 적당히 적습니다. (예: python-report)
    • 이름 입력 후 「생성」 버튼을 클릭합니다.

    📌 5단계: 발급된 앱 비밀번호 복사하기

    • 비밀번호가 팝업으로 표시됩니다. 지금 복사해두세요!
      (한 번 닫으면 다시 볼 수 없고, 분실하면 재발급해야 합니다.)
    • 이 비밀번호를 Python 코드 내의 EMAIL_PASSWORD 변수에 사용하면 됩니다.
    EMAIL_ADDRESS = 'your-email@gmail.com'
    EMAIL_PASSWORD = '발급된 앱 비밀번호 입력'

    ⚠️ 앱 비밀번호 보관 시 주의사항

    • 비밀번호는 절대 외부에 유출되지 않도록 안전하게 관리하세요.
    • 비밀번호가 유출된 경우 즉시 삭제 후 재발급 받으세요.
    • 사용하지 않을 때는 삭제하는 것을 권장합니다.

    ✅ 앱 비밀번호 삭제 방법 (참고)

    • 「앱 비밀번호」 메뉴에서 발급된 비밀번호를 확인하고 삭제 버튼을 눌러 삭제할 수 있습니다.
    • 삭제된 비밀번호는 다시 사용할 수 없습니다.

    📌 마무리

    이제 Python으로 리포트를 자동 생성하고,
    매일 자동으로 이메일로 받을 수 있는 완전한 시스템을 구축했습니다.

    💡 응용 가능성:

    • 투자자 또는 고객 대상 주식 정보 서비스
    • 포트폴리오 관리용 개인 리포트 자동화
    • 업무 협업용 공유 리포트 자동 배포

    🔜 다음 글 예고

    [5편] 한국 주식(KRX) 및 환율 데이터 자동 수집 및 리포트 생성

    • 국내 주식 데이터를 활용한 리포트 작성
    • pykrx 및 환율 API 활용법을 소개합니다.

    🙋‍♂️ 피드백과 공유는 큰 힘이 됩니다!

    도움이 되셨다면, 공감 / 댓글 / 스크랩 부탁드려요! 🙌
    질문이나 제안도 언제나 환영합니다.

Designed by Tistory.