728x90
728x90

파이썬을 이용하여 이메일 보내는 방법 (smtplib, email)

들어가며

  • 파이썬 코드를 이용하여 간단하게 이메일을 보내보자.
  • 파이썬에 기본으로 내장되어 있는 @smtplib@ 모듈과 @email@ 모듈을 이용할 것이다.

 

ⓒ Real Python

 

방법

필요한 모듈 불러오기

  • 이메일을 불러오기 위해 필요한 모듈을 불러온다.
  • 파이썬에 기본으로 내장되어 있는 @smtplib@ 모듈과 @email@ 모듈을 불러올 것이다.
import smtplib

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication

 

 

메일 수신자, 발신자 설정하기

  • @recipients@ 변수에 수신자 이메일들을 넣어준다.
recipients = ["수신자1_이메일", "수신자2_이메일"]

message = MIMEMultipart()
message['Subject'] = "메일 발송 테스트"   # 메일 제목
message['From'] = "helloworld@naver.com"    # 메일 발신자 (예: 네이버)
message['To'] = ",".join(recipients)    # 메일 수신자

 

메일 내용 입력하기

  • HTML 형식으로 메일을 보낼 것이다.
  • 메일의 내용을 HTML 형식으로 @message_content@ 변수에 넣어준다.
message_content = """
<html>
    <body>
        <h2>메일 전송 테스트</h2>
        <p>메일 전송 테스트입니다</p>
    </body>
</html>
"""
imetext = MIMEText(message_content, 'html')
message.attach(mimetext)

 

메일 발신자 SMTP 아이디/비밀번호 입력 및 전송하기

  • 메일 발신자SMTP 아이디와 비밀번호를 입력한다.
  • 아래의 코드에는 발신자의 SMTP 계정이 네이버(@smtp.naver.com@)로 설정한 경우이다.
    • 네이버 아이디를 @email_id@ 변수에, 네이버 비밀번호를 @email_pw@에 넣어준다.
  • @sendmail@ 함수를 통해 메일이 전송된다.
email_id = "발신자_SMTP_ID"
email_pw = "발신자_SMTP_PW"

server = smtplib.SMTP('smtp.naver.com', 587)    # 예: 네이버
server.ehlo()
server.starttls()
server.login(email_id, email_pw)
server.sendmail(message['From'], recipients, message.as_string())    # 메일 전송
server.quit()

 

전체 코드

import smtplib

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication

# 메일 수신자, 발신자 설정하기
recipients = ["수신자1_이메일", "수신자2_이메일"]

message = MIMEMultipart()
message['Subject'] = "메일 발송 테스트"   # 메일 제목
message['From'] = "helloworld@naver.com"    # 메일 발신자 
message['To'] = ",".join(recipients)    # 메일 수신자

# 메일 내용 입력하기
message_content = """
<html>
    <body>
        <h2>메일 전송 테스트</h2>
        <p>메일 전송 테스트입니다</p>
    </body>
</html>
"""
imetext = MIMEText(message_content, 'html')
message.attach(mimetext)

# 메일 발신자 SMTP 아이디, 비밀번호 입력 및 메일 보내기
email_id = "발신자_SMTP_ID"
email_pw = "발신자_SMTP_PW"

server = smtplib.SMTP('smtp.naver.com', 587)    # 예: 네이버
server.ehlo()
server.starttls()
server.login(email_id, email_pw)
server.sendmail(message['From'], recipients, message.as_string())    # 메일 전송
server.quit()

 

 

참고

  • @smtlib@ 모듈에 관한 자세한 내용은 아래의 공식 레퍼런스 문서를 참고한다.
 

smtplib — SMTP protocol client

Source code: Lib/smtplib.py The smtplib module defines an SMTP client session object that can be used to send mail to any internet machine with an SMTP or ESMTP listener daemon. For details of SMTP...

docs.python.org

 

  • @email@ 모듈에 관한 자세한 내용은 아래의 공식 레퍼런스 문서를 참고한다.
 

email — An email and MIME handling package

Source code: Lib/email/__init__.py The email package is a library for managing email messages. It is specifically not designed to do any sending of email messages to SMTP ( RFC 2821), NNTP, or othe...

docs.python.org

 

728x90
728x90