본문 바로가기
카테고리 없음

파이썬으로 일정 관리 및 알림 자동화하기 - schedule과 smtplib 활용

by 혜택보관소 2024. 12. 4.

효율적인 일정 관리와 알림 시스템은 업무 생산성을 높이는 데 중요한 역할을 합니다.

파이썬의 schedule 모듈을 사용하면 정기적인 작업을 자동으로 실행할 수 있으며, smtplib 모듈을 활용해 이메일 알림을 보낼 수 있습니다.

이번 글에서는 파이썬을 사용하여 일정 관리 및 알림 자동화 시스템을 구현하는 방법을 예제를 통해 소개합니다.

파이썬 알림 자동화

일정 관리 및 알림을 위한 필수 모듈 설치

다음 명령어로 필요한 파이썬 라이브러리를 설치하세요:

pip install schedule smtplib

schedule: 주기적으로 작업을 실행하는 데 사용.
smtplib: 이메일 알림을 보내는 데 사용.

schedule 모듈을 사용한 작업 예약

schedule 모듈을 사용하면 간단하게 작업을 예약할 수 있습니다.

예를 들어 매일 같은 시간에 작업을 실행할 수 있습니다.

예제: 매시간 메시지 출력

import schedule
import time

def print_message():
    print("지정된 시간이 되었습니다. 작업을 실행합니다.")

# 작업 예약 (매시간 실행)
schedule.every(1).hours.do(print_message)

while True:
    schedule.run_pending()
    time.sleep(1)

위 코드는 매시간 작업을 실행하며, 작업이 실행될 때마다 메시지를 출력합니다.

이메일 알림 시스템 구현

문제가 발생하거나 알림이 필요한 경우 이메일을 통해 알림을 보낼 수 있습니다.

예제: 이메일 알림 보내기

import smtplib
from email.mime.text import MIMEText

def send_email(subject, body, recipient_email):
    sender_email = "your_email@gmail.com"
    sender_password = "your_password"  # Gmail 앱 비밀번호 사용
    smtp_server = "smtp.gmail.com"
    smtp_port = 587

    # 이메일 구성
    msg = MIMEText(body)
    msg["Subject"] = subject
    msg["From"] = sender_email
    msg["To"] = recipient_email

    # 이메일 전송
    with smtplib.SMTP(smtp_server, smtp_port) as server:
        server.starttls()
        server.login(sender_email, sender_password)
        server.sendmail(sender_email, recipient_email, msg.as_string())

    print("알림 이메일이 전송되었습니다.")

# 이메일 테스트
send_email(
    subject="테스트 알림",
    body="이것은 테스트 이메일입니다.",
    recipient_email="recipient@example.com"
)

위 코드는 smtplib를 사용하여 Gmail SMTP 서버를 통해 알림 이메일을 전송합니다.

일정 관리와 알림 통합

정기적으로 작업을 실행하면서 알림을 이메일로 보낼 수 있도록 두 모듈을 통합해 봅니다.

예제: 일정 관리와 이메일 알림

import schedule
import smtplib
from email.mime.text import MIMEText
import time

# 이메일 전송 함수
def send_email(subject, body, recipient_email):
    sender_email = "your_email@gmail.com"
    sender_password = "your_password"
    smtp_server = "smtp.gmail.com"
    smtp_port = 587

    msg = MIMEText(body)
    msg["Subject"] = subject
    msg["From"] = sender_email
    msg["To"] = recipient_email

    with smtplib.SMTP(smtp_server, smtp_port) as server:
        server.starttls()
        server.login(sender_email, sender_password)
        server.sendmail(sender_email, recipient_email, msg.as_string())

    print("알림 이메일이 전송되었습니다.")

# 일정 작업 함수
def scheduled_task():
    print("스케줄 작업 실행 중...")
    send_email(
        subject="스케줄 작업 알림",
        body="이메일 알림 테스트: 스케줄 작업이 실행되었습니다.",
        recipient_email="recipient@example.com"
    )

# 작업 예약 (매일 오전 9시 실행)
schedule.every().day.at("09:00").do(scheduled_task)

while True:
    schedule.run_pending()
    time.sleep(1)

위 코드는 매일 오전 9시에 작업을 실행하고, 이메일 알림을 보냅니다.

활용 사례

이 시스템은 다양한 상황에서 활용할 수 있습니다:

  • 일일 또는 주간 알림 시스템
  • 작업 완료 알림
  • 정기적인 데이터 백업 및 상태 보고
  • 중요 일정 리마인더

전체 예제: 다중 작업 자동화

다양한 작업을 통합하여 자동화하는 예제를 작성해 보겠습니다.

전체 예제

# 이메일 및 작업 함수 정의
def morning_task():
    print("아침 작업 실행")
    send_email(
        subject="아침 알림",
        body="아침 작업이 실행되었습니다.",
        recipient_email="recipient@example.com"
    )

def evening_task():
    print("저녁 작업 실행")
    send_email(
        subject="저녁 알림",
        body="저녁 작업이 실행되었습니다.",
        recipient_email="recipient@example.com"
    )

# 작업 예약
schedule.every().day.at("08:00").do(morning_task)
schedule.every().day.at("18:00").do(evening_task)

# 실행 루프
while True:
    schedule.run_pending()
    time.sleep(1)

위 코드는 아침과 저녁에 각각 다른 작업을 실행하며, 작업 완료 시 이메일 알림을 보냅니다.

마무리

이번 글에서는 파이썬 schedule과 smtplib 모듈을 사용해 일정 관리와 알림 자동화 시스템을 구현하는 방법을 살펴보았습니다.

이 시스템은 효율적인 작업 관리와 생산성 향상에 큰 도움을 줄 수 있습니다.

실습을 통해 자신만의 일정 관리 프로그램을 만들어보세요!