개발 문서/Python
Python으로 이메일 자동 전송하기
copg
2025. 3. 12. 14:12
728x90
반응형
Python의 smtplib와 email 라이브러리를 활용해 이메일을 자동 전송하는 방법
필요한 라이브러리
Python 표준 라이브러리에 포함되어 있어 추가 설치가 필요하지 않습니다.
- smtplib: 메일 서버와의 통신을 위한 라이브러리
- email: 이메일 내용을 구성하기 위한 라이브러리
SMTP 서버 설정 및 이메일 전송
아래는 이메일을 전송하기 위한 상세한 예제 코드입니다.
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# SMTP 서버 설정 (Gmail 사용 예)
smtp_server = "smtp.gmail.com"
smtp_port = 587
sender_email = "your_email@gmail.com"
sender_password = "your_password"
# 이메일 전송 함수 정의
def send_email(receiver_email, receiver_name, subject, body):
# 메일 구성
msg = MIMEMultipart()
msg['Subject'] = subject
msg['From'] = sender_email
msg['To'] = receiver_email
# 이메일 본문 추가
msg.attach(MIMEText(body, 'plain'))
try:
# SMTP 서버 연결
server = smtplib.SMTP(smtp_server, smtp_port)
server.ehlo() # 서버와의 연결 확인
server.starttls() # TLS 보안 연결
server.login(sender_email, sender_password)
# 이메일 전송
server.sendmail(sender_email, receiver_email, msg.as_string())
print(f"{receiver_name}님({receiver_email})에게 이메일을 성공적으로 전송했습니다.")
except Exception as e:
print(f"이메일 전송 중 오류 발생: {e}")
finally:
server.quit() # 서버 연결 종료
# 사용 예시
receiver_email = "example_receiver@gmail.com"
receiver_name = "홍길동"
subject = "안녕하세요!"
body = f"안녕하세요, {receiver_name}님. Python으로 전송된 이메일입니다."
send_email(receiver_email, receiver_name, subject, body)
코드 상세 설명
- smtplib.SMTP를 이용해 SMTP 서버와의 연결을 생성합니다.
- **server.ehlo()**를 통해 서버와의 연결을 확인하고, **server.starttls()**를 통해 TLS로 보안을 설정합니다.
- **server.login()**을 통해 SMTP 서버에 로그인하여 인증합니다.
- email.mime의 MIMEMultipart와 MIMEText 클래스를 사용해 이메일의 제목과 본문을 구성합니다.
- **server.sendmail()**로 이메일을 전송하고, 작업이 끝나면 **server.quit()**를 통해 연결을 종료합니다.
Gmail 보안 설정 유의사항
- Gmail에서는 계정 보안을 위해 "앱 비밀번호"를 생성해 사용하거나, "보안 수준이 낮은 앱"의 접속을 허용해야 합니다.
- 중요한 비밀번호는 환경변수 또는 별도의 보안 파일로 관리하는 것을 권장합니다.