가이드라인

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

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

이메일에 첨부파일을 추가할 때 사용하는 주요 라이브러리는 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에 코드프렌즈 가입 이메일을 입력하거나 잘 반영되어 있는지 확인하고, 코드를 실행해보세요.

Mission
0 / 1

다음 중 이메일을 첨부할 때 사용하는 메서드는 무엇일까요?

join

add

attach

append

가이드라인

AI 튜터

배포

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행
코드 생성

실행 결과