메일 보내기 (SMTP)

메일 보내기 (SMTP Mail)

파이썬에서 이메일을 보내기 위해서는 파이썬에 기본 내장된 smtplib 라는 모듈을 사용한다. SMTP는 Simple Mail Transfer Protocol의 약자로서 메일을 보내는데 사용되는 프로토콜이다. 개인이나 회사가 SMTP 서버를 설치해서 이를 통해 메일을 발송할 수 있지만, 요즘은 구글, 마이크로소프트 등 많은 회사들이 SMTP 서버를 사용할 수 있도록 오픈하고 있기 때문에 이들 SMTP 서버를 사용해서 메일을 발송할 수 있다.

메일 Provider SMTP 서버명, 포트
Live smtp.live.com, 587
GMail smtp.gmail.com, 587

파이썬에서 SMTP 서버에 접속하기 위해서는 smtplib 모듈을 import 한 후, SMTP 서버와 포트로 SMTP 객체를 생성한다. SMTP 서버의 Encryption 방식에 따라 TTL 혹은 SSL을 사용하는데, TLS을 사용하는 경우 smtplib.SMTP()를, SSL을 사용하는 경우 smtplib.SMTP_SSL() 을 사용한다. TLS는 보통 포트 587을, SSL은 465를 사용한다.

SMTP 객체를 생성한 후에는 프로토콜 상 가장 먼저 SMTP 서버에 Hello 메시지를 보내는데, ehlo() 메서드가 이 기능을 한다. Hello 메시지 이후, TLS 인 경우는 starttls() 를 실행하여 TLS Encryption을 시작하는데, SSL인 경우에는 이 메서드를 호출하지 않는다.

# -*- coding:utf-8 -*-

import smtplib
from email.mime.text import MIMEText

smtp = smtplib.SMTP('smtp.live.com', 587)
smtp.ehlo()      # say Hello
smtp.starttls()  # TLS 사용시 필요
smtp.login('lee@live.com', 'password')

msg = MIMEText('본문 테스트 메시지')
msg['Subject'] = '테스트'
msg['To'] = 'kim@naver.com'
smtp.sendmail('lee@live.com', 'kim@naver.com', msg.as_string())

smtp.quit()

이렇게 기본 연결을 마친 후, login(계정, 암호) 메서드를 호출하여 계정과 암호를 넣고 사용자 인증을 받게 된다. 이후, sendmail(송신자, 수신자, 메시지) 메서드를 사용하여 메일을 보내게 되는데, 여기서 메시지는 간단한 메시지의 경우는 email.mime.text.MIMEText 을, 좀 더 복잡한 메시지의 경우는 email.mime.multipart.MIMEMultipart 등을 사용할 수 있다. 마지막으로 SMTP와 연결을 끊고 종료하기 위해서는 quit() 메서드를 호출한다.

본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.