주기적으로 이메일을 보내는 방법
회사에서 매일, 매주 또는 매월 특정 시간에 이메일을 보내야 하는 경우, 이를 자동화할 수 있다면 얼마나 좋을까요?
파이썬의 schedule
패키지를 사용하면 특정 시간에 반복적으로 작업을 수행하는 프로그램을 만들 수 있습니다.
컴퓨터에 schedule 패키지를 설치하려면 터미널에서 다음 명령어를 실행하면 됩니다.
pip install schedule
이번 수업에서는 파이썬을 사용해 주기적인 이메일을 자 동으로 보내는 방법을 배워보겠습니다.
주기적인 이메일을 보내기 위한 파이썬 패키지
schedule 패키지와 smtplib 패키지를 함께 사용하면, 특정 시간에 이메일을 보내는 작업을 자동화할 수 있습니다.
간단한 파이썬 코드 예시
다음은 매일 오전 9시에 이메일을 자동으로 보내는 코드 예시입니다.
import schedule
import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def send_email():
# 발신자와 수신자 정보 설정
sender_email = "your_email@example.com"
receiver_email = "receiver@example.com"
password = "your_password"
# 이메일 제목과 본문 작성
subject = "일일 보고서"
body = "안녕하세요,\n\n오늘의 일일 보고서를 보내드립니다.\n\n감사합니다."
# MIME 설정
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = receiver_email
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
# 이메일 전송
try:
server = smtplib.SMTP('smtp.example.com', 587) # SMTP 서버와 포트 번호 설정
server.starttls() # TLS 보안 시작
server.login(sender_email, password) # 로그인
server.sendmail(sender_email, receiver_email, msg.as_string()) # 이메일 전송
print("이메일이 성공적으로 발송되었습니다!")
except Exception as e:
print(f"이메일 발송 중 에러 발생: {e}")
finally:
server.quit() # 서버 연결 종료
# 매일 오전 9시에 이메일 전송
schedule.every().day.at("09:00").do(send_email)
# 스케줄러 실행
while True:
schedule.run_pending()
time.sleep(1)
코드 설명
1. Schedule 패키지로 시간 설정
schedule 패키지를 사용하여 특정 시간에 send_email
함수를 실행하도록 설정합니다.
위 코드 예시는 매일 오전 9시에 이메일이 전송되도록 schedule.every().day.at("09:00").do(send_email)
와 같이 코드를 작성했습니다.
-
every()
: 스케줄러를 설정 -
day.at("09:00")
: 매일 오전 9시에 실행 -
do(send_email)
:send_email
함수 실행
2. 스케줄러 실행
while True:
schedule.run_pending()
time.sleep(1)
마지막으로, while True
루프를 사용해 스케줄러가 계속 작동하도록 합니다.
schedule.run_pending()
메서드는 예약된 작업이 있는지 확인하고, 실행할 작업이 있다면 실행합니다.
time.sleep(1)
은 CPU 자원을 낭비하지 않도록 1초에 한 번씩만 확인하게 합니다.
이와 같이 schedule
과 smtplib
를 함께 활용하면 주기적인 이메일 발송 작업을 프로그램으로 처리하여, 반복적인 이메일 업무를 자동화할 수 있습니다.
참고 : 본 수업에서는 무분별한 이메일 스케쥴링을 방지하기 위해 코드 예시만 제공하며, 코드프렌즈 프로젝트에서 주기적으로 이메일을 발송하는 파이썬 프로그램을 만들고 실생활에 활용하실 수 있습니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!