반원 블로그

[파이썬 레시피 - 웹 활용 입문편] 03. 메일 - B. 구글 메일 파일 첨부 본문

2018~/파이선 레시피 웹 활용 입문편

[파이썬 레시피 - 웹 활용 입문편] 03. 메일 - B. 구글 메일 파일 첨부

반원_SemiCircle 2019. 6. 15. 15:27

파일 첨부 메일 전송

파일을 첨부하면 전송해야될 데이터(MIME타입 데이터) 개수가 2개 이상이 됩니다. 여러 개의 MIME 데이터를 하나의 MIME에 담아서 보내봅시다.(마치 편지와 여러가지 과자를 하나의 택배에 넣어 보내듯이)

파일 첨부 MIME의 경우 파일에 대한 정보를 header에 추가해줘야합니다. 또한 파일은 바이너리(binary) 모드로 읽어와서 MIMEApplication 함수의 입력인자로 넣어 MIME 데이터를 생성합니다.

여러 개의 MIME 데이터를 담을 택배에 해당하는 MIME 데이터는 MIMEMultipart를 통해 만들 수 있습니다.

import smtplib # 메일을 보내기 위한 라이브러리 모듈
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication 

sendEmail = "구글ID@gmail.com"
recvEmail = "받는 이메일"
password = "구글 비밀번호"

smtpName = "smtp.gmail.com"
smtpPort = 587

#여러 MIME을 넣기위한 MIMEMultipart 객체 생성
msg = MIMEMultipart()

msg['Subject'] ="메일 제목"
msg['From'] = sendEmail 
msg['To'] = recvEmail 

#본문 추가
text = "이것은 메일 내용"
contentPart = MIMEText(text) #MIMEText(text , _charset = "utf8")
msg.attach(contentPart) 

#파일 추가
etcFileName = '파일명'
with open(etcFileName, 'rb') as etcFD : 
    etcPart = MIMEApplication( etcFD.read() )
    #첨부파일의 정보를 헤더로 추가
    etcPart.add_header('Content-Disposition','attachment', filename=etcFileName)
    msg.attach(etcPart) 

s=smtplib.SMTP( smtpName , smtpPort )
s.starttls()
s.login( sendEmail , password ) 
s.sendmail( sendEmail, recvEmail, msg.as_string() )  
s.close() 

구글 메일 가이드

구글에서 메일 전송 가이드는 아래 링크를 참조하세요.
https://developers.google.com/gmail/api/guides/sending

Comments