오늘은 파이썬을 사용하여 자동으로 이메일을 발송하는 방법에 대해 알아보도록 하겠습니다. 이메일 자동화는 반복되는 작업을 줄여주고, 업무 효율성을 높여주는 매우 유용한 기술입니다. 이 글을 통해 여러분은 파이썬의 SMTP(Simplified Mail Transfer Protocol) 라이브러리를 활용하여 쉽게 이메일을 보낼 수 있는 방법을 익히게 될 것입니다.

1. 환경 설정하기
이메일을 발송하기 위해 파이썬의 smtplib
라이브러리를 사용해야 합니다. 이 라이브러리를 통해 다양한 메일 서비스를 통해 이메일을 보낼 수 있습니다. 아래는 주요 메일 서비스의 SMTP 서버 정보를 정리한 목록입니다.
- Gmail: smtp.gmail.com (포트: 587)
- Naver: smtp.naver.com (포트: 587)
- Outlook: smtp.office365.com (포트: 587)
Gmail을 사용할 경우, ‘보안 수준이 낮은 앱’의 접근을 허용하는 것이 필요합니다. 이를 위해 Google 계정의 설정 메뉴를 통해 보안 옵션을 조절하고, 앱 비밀번호를 생성하면 더 안전하게 사용할 수 있습니다.
2. 기본 이메일 전송 코드 작성하기
이제 이메일을 보내기 위한 기본 코드를 작성해보도록 하겠습니다. 아래 예시는 이메일을 단순하게 보내는 과정입니다.
import smtplib
from email.mime.text import MIMEText
# 이메일 계정 정보
SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 587
EMAIL_SENDER = "your_email@gmail.com"
EMAIL_PASSWORD = "your_password" # 앱 비밀번호 사용 권장
EMAIL_RECEIVER = "receiver_email@example.com"
# 이메일 내용 작성
subject = "자동화된 뉴스 보고서"
body = "안녕하세요, \n\n자동 크롤링된 뉴스 보고서를 첨부합니다."
msg = MIMEText(body)
msg["Subject"] = subject
msg["From"] = EMAIL_SENDER
msg["To"] = EMAIL_RECEIVER
# SMTP 서버에 연결하여 이메일 전송
try:
with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
server.starttls() # 보안 연결
server.login(EMAIL_SENDER, EMAIL_PASSWORD)
server.sendmail(EMAIL_SENDER, EMAIL_RECEIVER, msg.as_string())
print("✅ 이메일 전송 성공!")
except Exception as e:
print("⚠️ 이메일 전송 실패:", e)
위 코드에서는 SMTP 서버에 연결하고, 이메일을 작성하여 발송하는 과정을 포함하고 있습니다. 주의할 점은 starttls()
메소드를 사용하여 보안 연결을 설정하는 것입니다.
3. 첨부 파일이 포함된 이메일 보내기
이메일에 파일을 첨부하여 보내는 방법도 중요한 기능 중 하나입니다. 이를 위해 email.mime.multipart
모듈과 email.mime.base
모듈을 사용합니다. 다음은 파일 첨부 기능이 포함된 코드 예시입니다.
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
# 이메일 계정 정보
EMAIL_SENDER = "your_email@gmail.com"
EMAIL_PASSWORD = "your_password"
EMAIL_RECEIVER = "receiver_email@example.com"
# 이메일 구성
msg = MIMEMultipart()
msg["Subject"] = "자동화된 뉴스 보고서"
msg["From"] = EMAIL_SENDER
msg["To"] = EMAIL_RECEIVER
# 본문 내용 추가
body = "안녕하세요, \n\n자동 크롤링된 뉴스 보고서를 첨부합니다."
msg.attach(MIMEText(body, "plain"))
# 파일 첨부
filename = "news_report.xlsx"
with open(filename, "rb") as attachment:
part = MIMEBase("application", "octet-stream")
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header("Content-Disposition", f"attachment; filename={filename}")
msg.attach(part)
# 이메일 전송
try:
with smtplib.SMTP("smtp.gmail.com", 587) as server:
server.starttls()
server.login(EMAIL_SENDER, EMAIL_PASSWORD)
server.sendmail(EMAIL_SENDER, EMAIL_RECEIVER, msg.as_string())
print("✅ 이메일 전송 성공 (첨부파일 포함)!")
except Exception as e:
print("⚠️ 이메일 전송 실패:", e)
첨부 파일을 추가할 때는 파일을 읽은 후, Base64로 인코딩하여 이메일 메시지에 첨부하는 방식을 사용합니다.
4. 이메일 자동화 스케줄 설정하기
이메일을 특정 시간에 자동으로 전송하려면 schedule
라이브러리를 활용할 수 있습니다. 이를 통해 정해진 시간에 자동으로 이메일을 발송할 수 있습니다.
import schedule
import time
def send_email():
print("📧 이메일 전송 실행 중...")
try:
# 이메일 전송 코드 (첨부파일 포함)
with smtplib.SMTP("smtp.gmail.com", 587) as server:
server.starttls()
server.login(EMAIL_SENDER, EMAIL_PASSWORD)
server.sendmail(EMAIL_SENDER, EMAIL_RECEIVER, msg.as_string())
print("✅ 이메일 전송 성공!")
except Exception as e:
print("⚠️ 이메일 전송 실패:", e)
# 매일 아침 9시에 실행
schedule.every().day.at("09:00").do(send_email)
print("⏳ 자동 이메일 발송 대기 중...")
while True:
schedule.run_pending()
time.sleep(60) # 1분마다 체크
위 코드에서는 매일 정해진 시간에 이메일을 자동으로 발송하는 작업이 설정되어 있습니다. while True
루프를 사용하여 계속해서 스케줄을 확인하게 됩니다.

5. 마무리
이처럼 파이썬을 통해 이메일 자동 발송 시스템을 구축할 수 있습니다. 기본적인 이메일 전송부터 시작하여, 첨부 파일을 추가하고, 스케줄링을 통해 정기적으로 이메일을 보낼 수 있는 시스템까지 구현할 수 있습니다. 앞으로는 다양한 라이브러리와 기술을 활용하여, 더 많은 업무를 자동화할 수 있을 것입니다. 이메일 자동화 시스템을 통해 업무 효율성을 높이고, 더 중요한 일에 집중할 수 있기를 바랍니다!
자주 찾으시는 질문 FAQ
파이썬으로 이메일을 보내기 위해 어떤 라이브러리를 사용해야 하나요?
이메일 전송을 위해 파이썬의 smtplib
라이브러리를 활용합니다. 이 라이브러리는 다양한 메일 서비스를 통해 이메일 발송을 가능하게 합니다.
이메일을 보내기 위한 SMTP 서버 설정은 어떻게 하나요?
SMTP 서버 설정은 사용 중인 메일 서비스에 따라 다릅니다. 예를 들어, Gmail의 경우 smtp.gmail.com
을 사용하며, Naver는 smtp.naver.com
을 이용합니다.
이메일 자동화를 위해 스케줄링은 어떻게 설정하나요?
이메일 자동 발송을 위해 schedule
라이브러리를 사용하여 특정 시간마다 이메일을 전송하도록 설정할 수 있습니다. 이를 통해 정해진 시간에 자동으로 실행할 수 있습니다.