파이썬에서 네이버 메일 전송

Donggun Lim·2024년 7월 29일

Python

목록 보기
1/1

1 네이버 메일에서 환경설정

POP3/IMAP 설정 변경 / IMAP/SMTP 설정 변경

"사용함"을 선택

사용할 포트 번호를 확인해준다.

현재 코드에서는 SMTP만 사용하기 때문에 POP3/SMTP를 써도 된다.

2 파이썬 모듈 불러오기

smtplib 모듈

smtplib 모듈은 파이썬에서 Simple Mail Transfer Protocol(SMTP)을 사용하여 이메일을 보내는 데 사용됩니다. 이 모듈을 사용하면 이메일 서버와 연결하여 이메일을 작성하고 전송할 수 있습니다. 주요 기능은 다음과 같습니다:

SMTP 서버에 연결
이메일 전송
이메일 서버에 로그인
TLS(Transport Layer Security) 또는 SSL(Secure Sockets Layer) 암호화 사용
주요 클래스와 메서드는 다음과 같습니다:

smtplib.SMTP(): SMTP 서버와의 연결을 생성합니다.
SMTP.starttls(): TLS 암호화를 시작합니다.
SMTP.login(user, password): SMTP 서버에 로그인합니다.
SMTP.sendmail(from_addr, to_addrs, msg): 이메일을 전송합니다.
SMTP.quit(): SMTP 서버와의 연결을 종료합니다.

email.mime.txt 모듈

email.mime.text 모듈
email.mime.text 모듈은 MIME(Multipurpose Internet Mail Extensions) 형식의 이메일 메시지 본문을 작성하는 데 사용됩니다. MIMEText 클래스는 텍스트 형식의 이메일 본문을 생성하는 데 사용됩니다. 이 모듈은 이메일 메시지의 텍스트 내용을 정의하고, 이메일의 내용 유형(Content-Type)을 설정합니다.

주요 클래스와 메서드는 다음과 같습니다:

email.mime.text.MIMEText(_text, _subtype='plain', _charset=None): 텍스트 형식의 MIME 메시지 객체를 생성합니다.
_text: 이메일 본문 텍스트입니다.
_subtype: 텍스트 형식을 지정합니다. 기본값은 'plain'(일반 텍스트)입니다. 'html'을 사용하면 HTML 형식의 이메일을 작성할 수 있습니다.
_charset: 문자 인코딩을 지정합니다. 예: 'utf-8'.

email.mime.base 모듈

email.mime.base 모듈은 MIME(Multipurpose Internet Mail Extensions) 객체의 기본 클래스를 제공합니다. 이 모듈의 주요 클래스는 MIMEBase이며, 이 클래스는 MIME 메시지 객체를 생성하기 위한 기본 클래스로 사용됩니다. 주로 첨부 파일과 같은 복잡한 MIME 메시지를 생성할 때 사용됩니다.

MIMEBase Class: MIME 메시지의 기본 클래스로, MIME 메시지의 기본 속성(Content-Type, Content-Transfer-Encoding 등)을 설정할 수 있습니다. 보통 이 클래스는 직접 사용되지 않고, MIME 메시지를 생성하는 다른 클래스(MIMEText, MIMEImage 등)의 부모 클래스로 사용됩니다.

email.mime.multipart 모듈

email.mime.multipart 모듈은 여러 부분으로 구성된 MIME 메시지를 생성하는 데 사용됩니다. 예를 들어, 본문과 첨부 파일이 포함된 이메일을 생성할 때 사용됩니다. 이 모듈의 주요 클래스는 MIMEMultipart입니다.

MIMEMultipart Class: 여러 부분으로 이루어진 MIME 메시지를 생성하는 클래스입니다. 이메일 본문, 첨부 파일 등 다양한 MIME 객체를 포함할 수 있습니다. 이를 통해 하나의 이메일에 텍스트, HTML, 파일 등 여러 콘텐츠를 포함할 수 있습니다.

email 모듈

email 모듈은 파이썬의 이메일 패키지로, 이메일 메시지를 작성, 구문 분석, 조작하는 데 필요한 다양한 도구를 제공합니다. 이 모듈은 MIME 메시지를 생성하고 처리하는 데 유용한 여러 서브 모듈을 포함합니다.

email.message: 이메일 메시지를 표현하는 기본 클래스와 유틸리티를 제공합니다.
email.mime.text: 텍스트 형식의 MIME 메시지를 생성하는 데 사용됩니다.
email.mime.image: 이미지 형식의 MIME 메시지를 생성하는 데 사용됩니다.
email.mime.audio: 오디오 형식의 MIME 메시지를 생성하는 데 사용됩니다.
email.mime.application: 특정 애플리케이션 데이터 형식의 MIME 메시지를 생성하는 데 사용됩니다.
email.encoders: MIME 메시지의 인코딩을 도와주는 유틸리티를 제공합니다.

3 계정 정보 config.txt 만들기

4 MIMETEXT 형식의 메시지 작성

이메일 본문 내용

msg_str = '메일을 전송해드립니다.'

  • 이메일 데이터 전송의 표준 인코딩 형식인 MIME 방식으로 데이터를 변환해준다.

  • 메일 제목, 송신자 메일주소, 수신자 메일주소를 입력해준다.

#메일을 보내기 위한 MIMEText 형식의 메시지 작성

msg = MIMEText(msg_str)

msg['Subject'] = 'test'

msg['From'] = 'mail@naver.com'

msg['To'] = 'kkukky81@gmail.com'

5 SMTP 이용해 네이버 메일 전송하기

마지막으로 STMP 모듈을 이용해 네이버 메일서버로 메일을 보내는 코드를 작성해준다.

#stmp 라이브러리를 이용해 메일 보내고, 연결 종료하기

smtp = smtplib.SMTP('smtp.naver.com', 587)

smtp.ehlo()

smtp.starttls()

smtp.login('mail@naver.com', 'password')

smtp.sendmail('송신자 메일주소', '수신자 메일주소', msg.as_string())

smtp.quit()

6 파이썬 코드를 실행. 전체 코드

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import os
import configparser

#config.txt 파일 경로
config_file = 'config.txt'

#설정 파일 읽기
config = configparser.ConfigParser()
config.read(configfile)

#Naver 이메일 사용자 정보
naveruser = config.get('credentials', 'user')
naver_password = config.get('credentials', 'password')

#Naver SMTP 서버 정보
smtpserver = 'smtp.naver.com'
smtp_port = 587

#이메일 정보
from_addr = naver_user
to_addr = '___'
subject = 'Subject: Test Email with Attachment'
body = 'This is a test email with attachment.'
_
#첨부 파일 경로 및 이름
file_path = 'C:/Coding/__.pdf'
file_name = "한글이름.pdf"

#이메일 메시지 작성
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = to_addr
msg['Subject'] = subject

#이메일 본문 추가
msg.attach(MIMEText(body, 'plain', 'utf-8'))

#첨부 파일 추가 / 파일 타입 MIME 확인
attachment = MIMEBase('application', 'pdf')

with open(filepath, 'rb') as attachment_file:
attachment.set_payload(attachment_file.read())
encoders.encode_base64(attachment)
attachment.add_header('Content-Disposition', 'attachment', filename=('utf-8', '', file_name))
msg.attach(attachment)

#SMTP 서버 연결 및 이메일 전송
try:
#stmp 라이브러리를 이용해 메일 보내고, 연결 종료하기
smtp = smtplib.SMTP(smtpserver, smtp_port)
smtp.ehlo()
smtp.starttls()
smtp.login(naver_user, naver_password)
smtp.sendmail(from_addr, to_addr, msg.as_string())

print('Email sent successfully.')
except Exception as e:
print(f'Failed to send email: {e}')
finally:
smtp.quit()

profile
일단 시작하고 완성할거야

0개의 댓글