
업무에서 반복적으로 이메일을 보내야 하는 경우가 많다. 예를 들어 매일 아침 보고서를 전송하거나, 특정 데이터를 기반으로 알림 메일을 발송하는 일은 자동화하기에 최적의 대상이다. 이번 글에서는 파이썬으로 자동 이메일을 보내는 실전 스크립트를 단계별로 구현해 보며, 실제 업무에 바로 적용할 수 있는 코드를 소개한다.
파이썬의
smtplib와 email 모듈을 활용하면 Gmail, Outlook 등 SMTP 서버를 통해 자동으로 이메일을 전송할 수 있다. 추가로 pandas를 이용해 데이터 기반 메일도 자동 생성 가능하다.1. SMTP(메일 전송 프로토콜)의 이해
이메일은 단순한 텍스트가 아니라, SMTP(Simple Mail Transfer Protocol)를 통해 서버 간 전달된다. 파이썬에서는 smtplib 모듈이 이 역할을 수행하며, Gmail의 경우 smtp.gmail.com 서버를 사용한다.
즉, 파이썬 코드가 메일 서버에 연결되어 인증을 거친 뒤, 본문과 첨부파일을 함께 전송하는 구조다.
2. 기본 메일 전송 코드
다음은 가장 간단한 이메일 전송 예제다. Gmail 기준으로 작성했으며, 본인의 계정 정보를 입력해야 한다.
import smtplib
from email.mime.text import MIMEText
# 메일 기본 정보 설정
sender = "myemail@gmail.com"
receiver = "example@domain.com"
subject = "자동화된 메일 테스트"
content = "안녕하세요. 파이썬으로 보낸 자동 메일입니다."
# MIME 객체 생성
msg = MIMEText(content)
msg["Subject"] = subject
msg["From"] = sender
msg["To"] = receiver
# SMTP 서버 접속 및 전송
smtp = smtplib.SMTP("smtp.gmail.com", 587)
smtp.starttls()
smtp.login(sender, "앱 비밀번호")
smtp.send_message(msg)
smtp.quit()
print("메일 전송 완료!")
여기서 주의할 점은 Gmail의 일반 비밀번호가 아니라 **앱 비밀번호(App Password)**를 사용해야 한다는 것이다. Google 계정에서 2단계 인증을 활성화한 후 발급받을 수 있다.
3. HTML 형식의 메일 전송
단순 텍스트보다 보기 좋은 이메일을 보내려면 HTML 형식을 이용하는 것이 좋다.
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
msg = MIMEMultipart("alternative")
msg["Subject"] = "HTML 이메일 예시"
msg["From"] = sender
msg["To"] = receiver
html = """
<html>
<body>
<h2 style='color:#2563eb'>파이썬 자동 메일</h2>
<p>이 메일은 파이썬 코드로 전송되었습니다.</p>
</body>
</html>
"""
msg.attach(MIMEText(html, "html"))
smtp = smtplib.SMTP("smtp.gmail.com", 587)
smtp.starttls()
smtp.login(sender, "앱 비밀번호")
smtp.send_message(msg)
smtp.quit()
이 방법을 활용하면, 보고서 스타일의 이메일이나 회사 공지 메일을 자동으로 예쁘게 보낼 수 있다.
4. CSV·엑셀 데이터 기반 대량 메일 자동화
다수의 수신자에게 개인화된 메일을 보내려면 pandas를 이용해 수신자 정보를 불러오는 방식이 가장 효율적이다.
import pandas as pd
from email.mime.text import MIMEText
import smtplib
# 수신자 목록 불러오기
data = pd.read_excel("mail_list.xlsx") # 이름, 이메일, 메시지 컬럼 포함
for i, row in data.iterrows():
msg = MIMEText(f"{row['이름']}님, {row['메시지']}")
msg["Subject"] = "개인화 자동 메일"
msg["From"] = sender
msg["To"] = row["이메일"]
smtp = smtplib.SMTP("smtp.gmail.com", 587)
smtp.starttls()
smtp.login(sender, "앱 비밀번호")
smtp.send_message(msg)
smtp.quit()
print(f"{row['이름']}님에게 메일 발송 완료")
이 스크립트를 실행하면, 엑셀에 적힌 모든 수신자에게 자동으로 개인화된 메일이 전송된다. 특히 고객 관리, 팀 보고, 이벤트 초대 메일에 유용하다.
5. 첨부파일까지 자동 전송하기
파이썬에서는 MIMEBase 클래스를 이용해 PDF, 이미지, 엑셀 등 다양한 파일을 첨부할 수 있다.
from email.mime.base import MIMEBase
from email import encoders
file = "report.pdf"
with open(file, "rb") as f:
part = MIMEBase("application", "octet-stream")
part.set_payload(f.read())
encoders.encode_base64(part)
part.add_header("Content-Disposition", f"attachment; filename={file}")
msg.attach(part)
이 코드를 HTML 본문과 함께 조합하면, “자동 보고서 메일 시스템”을 완성할 수 있다.
6. 자동화 응용 사례
- 📊 매일 아침 데이터 리포트 자동 발송
- 📧 고객 대상 뉴스레터 자동 전송
- 🧾 엑셀 기반 급여 명세서 자동 메일링
- 📅 일정 알림, 결제 확인 등 알림 메일
특히 pandas, openpyxl, schedule 라이브러리와 결합하면 완전한 자동화 루틴을 구성할 수 있다.
7. 자동화 시 주의사항
- ⚠️ SMTP 서버 사용 시 과도한 발송은 스팸으로 분류될 수 있음
- 🔐 Gmail은 앱 비밀번호 필수
- 🧩 SMTP 포트: 587 (TLS) / 465 (SSL)
- 📨 대량 발송 시 API 기반 메일 서비스(SendGrid 등) 고려
파이썬 이메일 자동화는 ‘시간 절약의 핵심 도구’
파이썬으로 이메일 자동화를 구현하면 매일 반복되는 업무에서 수 시간을 절약할 수 있다. 한 번 작성한 코드로 수십, 수백 건의 이메일을 효율적으로 관리할 수 있으며, 필요에 따라 HTML 포맷, 첨부파일, 데이터 자동 결합 등으로 확장도 가능하다.
결국 이메일 자동화는 단순한 기술이 아니라 **업무 효율성과 생산성을 극대화하는 전략 도구**다. 지금 바로 위의 예제를 실습해 보고, 자신만의 자동 보고서 시스템을 구축해 보자.