1 분 소요

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 설정도 해야합니다.)

패스워드를 입력하는 곳에서 앱 비밀번호를 넣으면 됩니다.

댓글남기기