본문으로 건너뛰기
실습하기

첨부파일을 포함한 이메일 전송하기

파이썬을 사용하면 첨부파일이 포함된 이메일을 프로그래밍적으로 전송할 수 있습니다.

이메일에 첨부파일을 추가할 때 사용하는 주요 라이브러리는 email입니다.

email 모듈은 이메일의 내용과 첨부파일을 구성할 수 있는 다양한 클래스와 메서드를 제공합니다.


이메일에 첨부파일 추가하기

앞의 수업에서 살펴본 것처럼, 이메일은 헤더(Header)본문(Body)으로 구성됩니다.

헤더에는 이메일의 메타데이터(발신자, 수신자, 제목 등)가 포함되며, 본문에는 실제 내용과 첨부파일이 포함됩니다.

이메일에 파일을 첨부할 때는 MIMEBase 객체를 사용합니다.

다음은 첨부파일이 포함된 이메일의 구조를 구성하는 기본적인 코드입니다.

첨부파일을 포함한 이메일 전송
# 관련 라이브러리 불러오기
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

# 이메일 내용 설정
msg = MIMEMultipart()
msg['From'] = 'your_email@example.com'
msg['To'] = 'youremail@example.com'
msg['Subject'] = '첨부파일이 포함된 이메일'

# 첨부파일 추가
filename = 'example.pdf'

# 첨부파일을 읽어 MIMEBase로 변환
attachment = open(filename, 'rb')

# MIMEBase로 변환한 첨부파일을 이메일에 추가
part = MIMEBase('application', 'octet-stream')

# 첨부파일 이름 설정
part.set_payload(attachment.read())

# 첨부파일 인코딩
encoders.encode_base64(part)

# 첨부파일 이름 설정
part.add_header('Content-Disposition', f'attachment; filename={filename}')

# 이메일에 첨부파일 추가
msg.attach(part)

코드 설명

1. 이메일 내용 설정

먼저 MIMEMultipart 객체를 생성하여 이메일의 본문과 첨부파일을 포함할 수 있는 기본 이메일 메시지를 만듭니다.

MIMEMultipart 객체 생성
# 이메일 내용 설정
msg = MIMEMultipart()
msg['From'] = 'your_email@example.com'
msg['To'] = 'youremail@example.com'
msg['Subject'] = '첨부파일이 포함된 이메일'

발신자, 수신자, 제목을 설정합니다.


2. 첨부파일 추가

MIMEBase는 이메일의 첨부파일을 나타내는 객체로, 첨부파일을 읽어 MIMEBase로 변환한 후 이메일에 추가합니다.

MIMEBase 객체 생성
# 첨부파일 추가
filename = 'example.pdf'

# 첨부파일을 읽어 MIMEBase로 변환
attachment = open(filename, 'rb')

# MIMEBase로 변환한 첨부파일을 이메일에 추가
part = MIMEBase('application', 'octet-stream')

3. 첨부파일 인코딩

# 첨부파일 이름 설정
part.set_payload(attachment.read())

# 첨부파일 인코딩
encoders.encode_base64(part)

# 첨부파일 이름 설정
part.add_header('Content-Disposition', f'attachment; filename={filename}')

set_payload 메서드로 첨부파일을 MIMEBase 객체에 추가하고, encode_base64 메서드로 첨부파일을 base64로 인코딩합니다.

base64는 데이터를 64개의 문자로 이루어진 문자열로 변환하는 인코딩 방식 중 하나입니다.

마지막으로 add_header 메서드로 첨부파일의 이름을 설정합니다.


실습

코드 에디터의 실습 코드에서 receiver_email에 코드프렌즈 가입 이메일을 입력하거나 잘 반영되어 있는지 확인하고, 코드를 실행해보세요.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!