파이썬_이메일 자동화
업데이트:
이메일 자동화 보내기
SMTP
- 인터넷에서 이메일을 전송하기 위해 널리 사용되는 프로토콜
- 포트 번호
- SMTP는 주로 25번 포트 사용
- 보안을 위한 연결은 587번 포트를 사용하여 STARTTLS를 통해 암호화된 연결 시작
- STARTTLS : 메일 전송 세션 중에 TLS(전송 계층 보안)를 활성화하여 메일 데이터 암호화
smtplib
- 파이썬에서 이메일을 프로그래밍적으로 보낼 수 있도록 하는 표준 라이브러리
- SMTP 프로토콜을 통해 이메일 서버에 연결하고, 메일을 보내거나 관련 작업 수행 가능
- 간단한 이메일 전송부터 복잡한 MIME 기반 메세지와 보안 연결까지 다양한 이메일 관련 기능 제공
MIME
- 인터넷에서 텍스트 이외의 데이터(ex. 이미지, 비디오, 오디오 등)를 전송하기 위해 이메일 메세지에 포함시킬 수 있도록 확장한 표준
- 원래 이메일은 ASCII 텍스트 전송만을 지원했기에, 다양한 형태의 컨텐츠를 다루기 위해 도입
- 주요 기능
- 비텍스트 첨부 파일 전송
- 다국어 텍스트 전송
- 메세지 본문의 여러 부분 포맷팅
MIMEText
: 이메일 메세지를 MIME 형식으로 구성할 수 있게 해주는 기능- 이메일의 본문과 관련 메타데이터(헤더)를 적절히 관리하고 조작 가능
- 일반 텍스트, HTML과 같은 형식의 텍스트 처리 가능
- 파라미터 : 최소 한 개의 파라미터 필요
text
: 본문 내용을 문자열로 전달subtype
: 본문의 내용 타입 지정- 기본값 : plain (일반 텍스트)
- 옵션 :
html
과 같이 다른 값으로 설정하여 HTML 형식의 이메일 생성 가능
charset
: 이메일의 문자 인코딩 지정- 권장 :
utf-8
은 국제적으로 사용되는 문자 인코딩 방식, 다양한 언어의 문자 포함 가능, 이메일 메세지가 다양한 시스템과 호환되며 문자 깨짐 현상을 방지
- 권장 :
- 주요 기능
- 이메일 본문 설정 :
text
는 이메일의 본문으로 설정 - 헤더 관리
Subject
: 이메일의 제목 설정From
: 발신자 주소To
: 수신자 주소Cc
: 이메일의 참조 복사본을 보내고자 하는 다른 수신자들의 주소 (Carbon Copy)
- 이메일 본문 설정 :
as_string()
:MIMEText
객체를 완전한 문자열 형태의 이메일 메세지로 변환- 기능 : 이메일의 헤더와 본문을 포함한 전체 MIME 메세지를 하나의 문자열로 구성
from email.mime.text import MIMEText
# 텍스트 이메일 생성
msg = MIMEText("This is a test email.", 'plain', 'utf-8')
# HTML 이메일 생성
html_msg = MIMEText("<html><body><h1>Hello, world!</h1></body></html>", 'html', 'utf-8')
테스트 메일 전송
- MIMEText 객체: 이메일의 본문과 메타데이터(헤더) 설정
- 헤더 설정
Subject
: 이메일 제목From
: 발신자 주소To
: 수신자 주소
as_string()
: MIMEText 객체를 완전한 형태의 이메일 문자열로 변환. 이 문자열은 서버를 통해 전송smtplib.SMTP
: 지정된 서버와 포트로 연결starttls()
: 보안 연결 활성화login()
: 발신자 이메일 계정으로 로그인sendmail()
: 이메일을 수신자에게 전송quit()
: SMTP 서버 연결을 종료
import smtplib # SMTP 프로토콜 사용을 위한 모듈
from email.mime.text import MIMEText # 텍스트 기반 이메일을 생성하기 위한 클래스
# 발신자, 수신자 및 서버 정보 설정
send_email = "본인 네이버 이메일 주소"
send_pwd = "비밀번호"
recv_email = "받는 사람 이메일 주소"
smtp_name = "smtp.naver.com"
smtp_port = 587
#이메일의 본문 작성
text = """
메일 내용 입력
텍스트1
텍스트2
"""
# MIMEText 객체 생성 및 헤더 설정
msg = MIMEText(text, 'plain', 'utf-8')
msg['Subject'] = "메일 제목 입력"
msg['From'] = send_email
msg['To'] = recv_email
# 이메일 메세지를 문자열로 변환
email_string = msg.as_string()
print(email_string)
# SMTP 서버를 통한 이메일 전송
s = smtplib.SMTP(smtp_name, smtp_port)
s.starttls() # 보안을 위해 TLS 사용
s.login(send_email, send_pwd)
s.sendmail(send_email, recv_email, email_string)
s.quit()
[개인 블로그에도 게시글을 올리고 있어, 이 블로그에는 각 파트별로 중요도가 높다고 생각되는 것들을 다뤄보고자 합니다.]
잘 부탁드립니다.