

POP3/IMAP 설정 변경 / IMAP/SMTP 설정 변경
"사용함"을 선택

사용할 포트 번호를 확인해준다.
현재 코드에서는 SMTP만 사용하기 때문에 POP3/SMTP를 써도 된다.

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.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 모듈은 MIME(Multipurpose Internet Mail Extensions) 객체의 기본 클래스를 제공합니다. 이 모듈의 주요 클래스는 MIMEBase이며, 이 클래스는 MIME 메시지 객체를 생성하기 위한 기본 클래스로 사용됩니다. 주로 첨부 파일과 같은 복잡한 MIME 메시지를 생성할 때 사용됩니다.
MIMEBase Class: MIME 메시지의 기본 클래스로, MIME 메시지의 기본 속성(Content-Type, Content-Transfer-Encoding 등)을 설정할 수 있습니다. 보통 이 클래스는 직접 사용되지 않고, MIME 메시지를 생성하는 다른 클래스(MIMEText, MIMEImage 등)의 부모 클래스로 사용됩니다.
email.mime.multipart 모듈은 여러 부분으로 구성된 MIME 메시지를 생성하는 데 사용됩니다. 예를 들어, 본문과 첨부 파일이 포함된 이메일을 생성할 때 사용됩니다. 이 모듈의 주요 클래스는 MIMEMultipart입니다.
MIMEMultipart Class: 여러 부분으로 이루어진 MIME 메시지를 생성하는 클래스입니다. 이메일 본문, 첨부 파일 등 다양한 MIME 객체를 포함할 수 있습니다. 이를 통해 하나의 이메일에 텍스트, HTML, 파일 등 여러 콘텐츠를 포함할 수 있습니다.
email 모듈은 파이썬의 이메일 패키지로, 이메일 메시지를 작성, 구문 분석, 조작하는 데 필요한 다양한 도구를 제공합니다. 이 모듈은 MIME 메시지를 생성하고 처리하는 데 유용한 여러 서브 모듈을 포함합니다.
email.message: 이메일 메시지를 표현하는 기본 클래스와 유틸리티를 제공합니다.
email.mime.text: 텍스트 형식의 MIME 메시지를 생성하는 데 사용됩니다.
email.mime.image: 이미지 형식의 MIME 메시지를 생성하는 데 사용됩니다.
email.mime.audio: 오디오 형식의 MIME 메시지를 생성하는 데 사용됩니다.
email.mime.application: 특정 애플리케이션 데이터 형식의 MIME 메시지를 생성하는 데 사용됩니다.
email.encoders: MIME 메시지의 인코딩을 도와주는 유틸리티를 제공합니다.

msg_str = '메일을 전송해드립니다.'
이메일 데이터 전송의 표준 인코딩 형식인 MIME 방식으로 데이터를 변환해준다.
메일 제목, 송신자 메일주소, 수신자 메일주소를 입력해준다.
#메일을 보내기 위한 MIMEText 형식의 메시지 작성
msg = MIMEText(msg_str)
msg['Subject'] = 'test'
msg['From'] = 'mail@naver.com'
msg['To'] = 'kkukky81@gmail.com'
마지막으로 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()
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()