학습 자료

파이썬 코드로 이메일을 보내는 방법

자동으로 이메일을 보내는 기능은 다양한 상황에서 유용하게 활용될 수 있습니다.

예를 들어 크롤링한 데이터를 가공해 일정한 시간에 리포트를 발송하거나, 특정 이벤트가 발생했을 때 알림 메일을 자동으로 발송할 수 있습니다.

이번 수업에서는 파이썬의 smtplib 라이브러리를 사용해 간단한 이메일을 보내는 방법을 배워보겠습니다.


간단한 이메일 발송 코드 예시

아래 코드는 smtplib를 사용해 이메일을 전송하는 간단한 예제입니다.

smtplib를 사용한 간단한 이메일 전송 예시
# smtplib 라이브러리 불러오기 import smtplib # 이메일 구성을 위한 라이브러리 불러오기 from email.mime.text import MIMEText # 이메일 본문과 제목을 구성하기 위한 라이브러리 불러오기 from email.mime.multipart import MIMEMultipart # 발신자 정보 설정 sender_email = "your_email@example.com" password = "your_password" # 수신자 정보 설정 receiver_email = "youremail@example.com" # 이메일 제목과 본문 작성 subject = "테스트 이메일" body = "안녕하세요, 이 메일은 파이썬 smtplib를 이용해 보내는 테스트 메일입니다." # MIME 설정 msg = MIMEMultipart() # 발신자 msg['From'] = sender_email # 수신자 msg['To'] = receiver_email # 제목 msg['Subject'] = subject # 본문 추가 msg.attach(MIMEText(body, 'plain')) # SMTP 서버 연결 및 이메일 전송 try: # SMTP 서버와 포트 번호 설정 server = smtplib.SMTP('smtp.example.com', 587) # TLS 보안 시작 server.starttls() # 로그인 server.login(sender_email, password) # 이메일 전송 server.sendmail(sender_email, receiver_email, msg.as_string()) print("이메일이 성공적으로 발송되었습니다!") except Exception as e: print(f"이메일 발송 중 에러 발생: {e}") finally: server.quit() # 서버 연결 종료

코드 상세 설명

1. 발신자와 수신자 정보 설정

코드의 초반부에서 발신자와 수신자의 이메일 주소, 그리고 발신자의 이메일 계정 비밀번호를 설정합니다.

발신자 이메일과 비밀번호는 SMTP 서버에 연결하여 이메일을 전송합니다.

발신자와 수신자 정보 설정
sender_email = "your_email@example.com" receiver_email = "receiver@example.com" password = "your_password"

2. 이메일 제목과 본문 작성

이메일의 제목(subject)과 본문(body)을 작성합니다.

본문은 간단한 텍스트로 구성되어 있으며, 이는 MIMEText 객체로 변환되어 이메일에 첨부됩니다.

이메일 제목과 본문 작성
subject = "테스트 이메일" body = "안녕하세요, 이 메일은 파이썬 smtplib를 이용해 보내는 테스트 메일입니다."

이후, MIMEMultipart 객체를 사용해 이메일의 제목, 본문, 발신자, 수신자 등을 하나로 묶습니다.

MIME 설정
# 이메일 메시지를 위한 컨테이너 역할 msg = MIMEMultipart() # 발신자 설정 msg['From'] = sender_email # 수신자 설정 msg['To'] = receiver_email # 이메일 제목 설정 msg['Subject'] = subject # 이메일 본문 추가 msg.attach(MIMEText(body, 'plain'))

이 코드에서 MIMEMultipart 객체는 이메일을 구성하는 다양한 부분(예: 제목, 본문, 첨부 파일 등)을 하나로 묶습니다.

MIMEText 객체는 이메일의 본문을 텍스트로 표현하며, 'plain' 인자는 텍스트 형식이 일반 텍스트임을 나타냅니다.


3. SMTP 서버 연결 및 이메일 전송

SMTP 서버 연결

SMTP('smtp.example.com', 587)는 외부의 SMTP 서버에 연결하는 코드입니다.

여기서 587은 SMTP 서버의 포트(Port) 번호로, 이메일을 전송하기 위해 사용하는 포트 번호입니다.

포트(Port) : 네트워크에서 프로그램이 통신을 위해 사용하는 번호


TLS(TLS)는 무엇인가요?

SMTP 서버와의 연결을 설정한 후, TLS(Transport Layer Security)로 보안을 강화합니다.

TLS는 이메일을 암호화하여 보안을 강화하는 프로토콜로, 이메일 전송 시 중요한 정보가 노출되는 것을 방지합니다.

발신자의 이메일 계정으로 서버에 로그인한 후, sendmail 메서드를 사용해 이메일을 전송합니다.

모든 작업이 끝나면 서버 연결을 종료합니다.

SMTP 서버 연결 및 이메일 전송
# SMTP 서버 연결 server = smtplib.SMTP('smtp.example.com', 587) # TLS 보안 시작 server.starttls() # 발신자 계정으로 로그인 server.login(sender_email, password) # 이메일 전송 server.sendmail(sender_email, receiver_email, msg.as_string())

실습

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

Quiz
0 / 1

아래 빈칸에 들어갈 적절한 단어는 무엇일까요?

SMTP 서버의 기본 포트 번호는 입니다.
567
587
555
589

학습 자료

AI 튜터

도움말

코드 에디터

코드 실행
코드 생성

실행 결과