본문 바로가기
Toy

Python 이용해서 Gmail로 메일 보내기 (2)

by 크라크라 2024. 7. 14.

이번 글에서는  파일 첨부에 관련된 내용이 추가되어있습니다. 

 

일단 보내는 법에 대한 내용은 다음을 참고하시면 됩니다.

https://toycoding.tistory.com/entry/Python%EC%9D%B4%EC%9A%A9%ED%95%B4%EC%84%9C-Gmail%EB%A1%9C-%EB%A9%94%EC%9D%BC-%EB%B3%B4%EB%82%B4%EA%B8%B0

 

Python 이용해서 Gmail로 메일 보내기

안녕하세요.  이번 글에서는 아주 간단하게, 공짜로 메일을 프로그램을 통해서 보낼 수 있는 방법을 공유드립니다. 일단 다음과 같이 파이썬 프로그램 코드를 작성합니다.  import smtplibfrom emai

toycoding.tistory.com

 

 

 


< 파일 첨부하기 >

 

사용하는 방법은 비슷합니다만, 파일 첨부를 위한 내용이 추가가 되어야겠죠 ?

아주 간단하게 실행하는 파일과 같은 폴더에서 attchment.txt 라는 파일을 보내는 것을 작성해보았습니다. 

파일을 읽고, EmailMessage 객체에 add_attachment 라는 함수를 실행해서 파일을 실어주면 됩니다. 

 

import smtplib
from email.message import EmailMessage

# SMTP 세션생성
s = smtplib.SMTP('smtp.gmail.com', 587)
# 보안 TLS 시작
s.starttls()
# 로그인 & 인증
s.login("<보내려고하는 내 메일 계정>", "<내 계정 앱 비밀번호>")
# 보낼 메시지 지정
message = EmailMessage()
message['Subject'] = f"제목"
message['From'] = "<보내는 사람 메일 계정>"
message['To'] = "<받는 사람 메일 계정>"

message.set_content("본문 with File")

with open('attachment.txt', 'rb') as f:
    file_data = f.read()
message.add_attachment(file_data, maintype='text', subtype='plain', filename='attachment.txt')


# 메일전송
s.send_message(message)
# 메일전송세션 종료
s.quit()

 

 

< 파일을 여러 개 첨부하기 > 

 

 이것은 그냥 파일 첨부하는 것과 동일한 방법으로 추가해주시면 됩니다. 

with open('file1.txt', 'rb') as f1, open('file2.txt', 'rb') as f2:
    file1_data = f1.read()
    file2_data = f2.read()
message.add_attachment(file1_data, maintype='text', subtype='plain', filename='file1.txt')
message.add_attachment(file2_data, maintype='text', subtype='plain', filename='file2.txt')

 

 

< 여러 종류의 파일 첨부하기 > 

 

add_attachment 함수의 maintype 과 subtype 을 각 파일과 맞는 형태로 넣어주시면 됩니다. 

 

파일 종류 maintype subtype
TXT text plain
HTML text html
PDF application pdf
EXCEL application vnd.ms-excel (xls) ,
vnd.openxmlformats-officedocument.spreadsheetml.sheet (xlsx) 
IMAGE image jpeg, png, gif, tiff, rgb, pbm, pgm, ppm,
rast, xbm, bmp, webp, exr...
AUDIO audio mp3, mpeg, wav ...
VIDEO video mp4, ogg, avi ...
파일형식 잘 모름 application octet-stream

 

 따라서 기본적인 형식들 위주로 작성하고, 잘 모르겠다 싶은 것은 octet-stream 으로 설정해주시면 메일이 정상적으로 전송될 것입니다.

 

이상으로 이번 글을 마치도록 하겠습니다.

댓글