smtplib 활용 Python에서 이메일 보내기
1. 라이브러리 설치
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
smtplib은 SMTP(Simple Mail Transfer Protocool) 클라이언트를 제공하는 파이썬 내장 라이브러리 입니다. 이를 사용해 이메일을 보낼 수 있습니다.
email.mime.mulitpart 모듈은 다중파트(Multipart) 이메일 메시지를 생성하기 위한 클래스인 MIMEMultipart를 제공합니다.
email.mime.text 모듈은 텍스트 이메일 메시지를 생성하기 위한 클래스인 MIMEText를 제공합니다.
2. SMTP 서버 설정
smtp_server = 'smtp.gmail.com' # 이메일 제공 업체에 따라 다를 수 있음.
smtp_port = 587 # SMTP 포트 번호
보안 연결인 STARTTLS를 지원하는 SMTP 서버를 사용하고 있으므로, 보통 587번 포트를 사용합니다. STARTTLS는 일반적으로 보안 연결을 위해 사용되는 암호화 방식 중 하나입니다. 이를 통해 이메일 전송 시 클라이언트(이메일 전송 프로그램)와 서버 간의 통신이 암호화되어 데이터의 안정성이 보장됩니다.
3. 정보
# 보내는 사람 정보
sender_email = 'jangcoding77@gmail.com'
sender_password = '' # 이메일 계정의 암호
# 받는 사람 정보
receiver_email = 'jangcoding77@gmail.com'
4. 구성
# 이메일 구성
message = MIMEMultipart()
message['From'] = sender_email # 발신자 주소
message['To'] = receiver_email # 수신자 주소
message['Subject'] = '자동화된 이메일 전송' # 이메일 제목
body = '이메일 전송이 성공적으로 이루어졌습니다.' # 이메일 본문
message.attach(MIMEText(body, 'plain')) # 본문을 이메일 메시지에 첨부
MIMEMultipart 클래스를 사용하여 message라는 이메일 메시지 객체를 생성합니다. MIMEMultipart는 다중파트(Multipart)이메일 메시지를 구성하기 위한 클래스로 복수의 파트(Part)로 구성되어 있으며, 각 파트는 텍스트, 첨부 파일, 이미지 등 다양한 유형의 컨텐츠를 포함할 수 있습니다.
plain은 본문이 일반 텍스트 형식임을 나타냅니다. 다른 형식으로 이메일을 작성하고 싶다면 ‘html’등 다른 형식을 사용할 수 있습니다.
5. SMTP 서버 연결 및 이메일 전송
try:
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls() # TLS 암호화 시작
server.login(sender_email, sender_password)
server.send_message(message)
print('이메일이 성공적으로 전송되었습니다!')
except Exception as e:
print('이메일 전송 중 오류가 발생했습니다: ', str(e))
이메일이 성공적으로 전송되었습니다!
6. 오류
Username and Password not accepted. 오류가 나오는 경우가 있습니다. 해당 메세지가 나오면서 URL이 하나 나올텐데 그 URL에 나와있는대로 하면 해결됩니다. 저의 경우엔, 2단계 인증을 하지 않아서 오류가 났었습니다. 2단계 인증을 하고 앱 비밀번호를 받으니 잘 전송되었습니다. (IMAP 설정도 해야합니다.)
패스워드를 입력하는 곳에서 앱 비밀번호를 넣으면 됩니다.
댓글남기기