IT's 2 EG
[Python] smtplib를 통한 Gmail 발송 본문
1. SMTP 란?
SMTP(Simple Mail Transfer Protocol)는 인터넷에서 이메일을 보내기 위해 이용되는 프로토콜 입니다.
일반적으로 TCP 25번 포트를 사용하며, 메일 서버간의 송수신뿐 아니라, 메일 클라이언트에서 메일 서버로
메일을 보낼때에도 사용되는 경우가 많습니다.
2. MIME 이란?
MIME(Multipurpose Internet Mail Extensions)은 전자우편을 위한 인터넷 표준 포맷입니다.
전자 우편은 7비트 ASCII 문자를 사용하여 전송되기 때문에, 8비트 이상의 코드를 사용하는 문자나 이진파일은 MIME 포맷으로 변환되어 SMTP로 전송됩니다. 실질적으로 SMTP로 전송되는 대부분의 전자우편은 MIME 형식입니다.
3. 사전 준비 작업
1) 구글 계정 설정 > 보안에서 2단계 인증 사용
2) 앱 비밀번호 생성 (대상 앱: 메일, 기기: windows 컴퓨터)
4. smtplib를 통한 Gmail 발송 소스코드
import os
import smtplib
import configparser
from email import encoders
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
config = configparser.ConfigParser()
config.read('config.ini')
try:
# 보낼 메시지 설정
mail = MIMEMultipart()
title = '메일 발송 테스트'
sender = 'kim@gmail.com'
#receivers = 'lee@gmail.com' #<- 한명에게 메일 보내기
receivers = ['lee@gmail.com', 'koo@gmail.com'] #<- 여러명에게 한꺼번에 보낼 때 List 사용
message = '테스트 메일 입니다.'
mail['Subject'] = title
mail.attach(MIMEText(message))
#첨부파일(여러개인 경우 List로 구성)
attachments = ['C:/test/test1.txt', 'C:/test/test2.txt']
# 메일 파일 첨부(첨부파일이 존재하는 경우)
if isinstance(attachments, list):
for file in attachments:
part = MIMEBase('application', 'octet-stream')
part.set_payload(open(file, 'rb').read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename=%s' % os.path.basename(file))
mail.attach(part)
# gmail smtp 세션 생성
session = smtplib.SMTP('smtp.gmail.com', 587)
# TLS 보안 시작
session.starttls()
# 로그인
session.login(config['Gmail']['ID'], config['Gmail']['PW'])
# 메일보내기
session.sendmail(sender, receivers, mail.as_string())
# 세션 종료
session.quit()
except Exception as ex:
print('Unexpected Error: ', ex)
'프로그래밍 노트 > Python' 카테고리의 다른 글
[Python] imaplib을 통한 Gmail 읽기 (1) | 2020.03.01 |
---|---|
[Python] ConfigParser 사용하기 (0) | 2020.02.16 |
Comments