가이드라인

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

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

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

이번 수업에서는 파이썬의 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에 코드프렌즈 가입 이메일을 입력하거나 잘 반영되어 있는지 확인하고, 코드를 실행해 보세요.

Mission
0 / 1

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

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

가이드라인

AI 튜터

배포

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행
코드 생성

실행 결과