첨부파일을 포함한 이메일 전송하기
파이썬을 사용하면 첨부파일이 포함된 이메일을 프로그래밍적으로 전송할 수 있습니다.
이메일에 첨부파일을 추가할 때 사용하는 주요 라이브러리는 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
객체를 생성하여 이메일의 본문과 첨부파일을 포함할 수 있는 기본 이메일 메시지를 만듭니다.
# 이메일 내용 설정 msg = MIMEMultipart() msg['From'] = 'your_email@example.com' msg['To'] = 'youremail@example.com' msg['Subject'] = '첨부파일이 포함된 이메일'
발신자, 수신자, 제목을 설정합니다.
2. 첨부파일 추가
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
에 코드프렌즈 가입 이메일을 입력하거나 잘 반영되어 있는지 확인하고, 코드를 실행해보세요.
다음 중 이메일을 첨부할 때 사용하는 메서드는 무엇일까요?
join
add
attach
append
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과