첨부파일을 포함한 이메일 전송하기
파이썬을 사용하면 첨부파일이 포함된 이메일을 쉽게 전송할 수 있습니다.
이메일에 첨부파일을 추가하는 과정은 크게 두 부분으로 나눌 수 있습니다.
이메일 본문을 작성하는 부분과 파일을 첨부하는 부분입니다.
이메일을 전송하는 데 사용되는 주요 라이브러리는 smtplib
과 email
입니다.
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
에 코드프렌즈 가입 이메일을 입력하거나 잘 반영되어 있는지 확인하고, 코드를 실행해보세요.
다음 중 이메일을 첨부할 때 사용하는 메서드는 무엇일까요?
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과