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

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

파이썬을 사용하면 첨부파일이 포함된 이메일을 쉽게 전송할 수 있습니다.

이메일에 첨부파일을 추가하는 과정은 크게 두 부분으로 나눌 수 있습니다.

이메일 본문을 작성하는 부분과 파일을 첨부하는 부분입니다.

이메일을 전송하는 데 사용되는 주요 라이브러리는 smtplibemail입니다.

smtplib은 이메일을 실제로 전송하는 역할을 하고, email 모듈은 이메일의 내용과 첨부파일을 구성하는 데 사용됩니다.


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

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

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

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

첨부파일이 있는 이메일 예제
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

# 이메일 서버 설정
smtp_server = 'smtp.example.com'
smtp_port = 587
username = 'your_email@example.com'
password = 'your_password'

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

# 본문 내용 추가
body = '안녕하세요,\n\n첨부파일을 확인해 주세요.'
msg.attach(MIMEText(body, 'plain'))

# 첨부파일 추가
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)

# 이메일 전송
with smtplib.SMTP(smtp_server, smtp_port) as server:
# TLS 암호화 설정
server.starttls()

# 로그인
server.login(username, password)

# 이메일 전송
server.send_message(msg)

print('이메일을 성공적으로 전송했습니다!')

코드 설명

1. 이메일 서버 설정

smtplib을 사용하여 이메일 서버와 연결합니다. SMTP 서버 주소와 포트를 설정하고, 로그인 정보(이메일 주소와 비밀번호)를 준비합니다.


2. 이메일 내용 설정

MIMEMultipart 객체를 생성하여 이메일의 본문과 첨부파일을 포함할 수 있는 기본 이메일 메시지를 만듭니다. 발신자, 수신자, 제목을 설정합니다.


3. 본문 내용 추가

MIMEText 객체를 사용하여 이메일의 본문을 설정합니다. 텍스트 형식으로 내용을 추가합니다.


4. 첨부파일 추가

MIMEBase 객체를 사용하여 첨부파일을 이메일에 추가합니다. 파일을 열고 읽은 후, Base64로 인코딩하여 첨부파일을 이메일에 붙입니다. 첨부파일의 이름과 함께 이메일 헤더를 설정합니다.


5. 이메일 전송

smtplib.SMTP를 사용하여 이메일 서버와 연결한 후, 로그인하고 이메일을 전송합니다.


실습

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

다음 내용이 궁금하다면?

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