In [11]:
import os
import smtplib
from email.message import EmailMessage
from email.mime.application import MIMEApplication

import getpass
password = getpass.getpass('Password : ')

message = EmailMessage()
message['Subject'] = 'AskDjango 파이썬 업무자동화 - 이메일 (테스트)'
message['From'] = '아이디@gmail.com'  # FIXME: 수정해주세요.
message['To'] = '주소.ac.kr' # 수신자 이메일 다수 (구분자: 콤마)

message.set_content('''이메일 내용

안녕하세요. AskDjango입니다.

이 부분에는 이메일의 내용을 쓰실 수 있으며, HTML은 불가합니다.
HTML을 쓰시면 태그가 그대로 노출됩니다.

여러분의 파이썬/장고 페이스메이커가 되겠습니다. 감사합니다. ;)''')

# html을 읽을수 있는 환경이면 아래 메세지가, 그렇지 않다면 위 메세지가 보여지는 설정임.
message.add_alternative('''
    <h1>AskDjango VOD</h1>
    
    <img src="cid:testing.png" width='200' height='200' />
    
    <p>이 부분에는 이메일의 내용을 쓰실 수 있으며, HTML은 불가합니다.
HTML을 쓰시면 태그가 그대로 노출됩니다.

여러분의 파이썬/장고 페이스메이커가 되겠습니다. 감사합니다. ;)</p>
''', subtype='html')

#이미지첨부1 - 첨부형식

# filepath='./testing.png'
# with open (filepath,'rb') as f:
#     filename=os.path.basename(filepath) # 파일의 제목만 뽑아냄
#     img_data=f.read()
#     part=MIMEApplication(img_data,name=filename)
#     message.attach(part)
    

# 이미지 첨부2- 본문삽입 방법
filepath_list = ['./testing.png']   # FIXME: 파일경로 수정이 필요합니다. 여러개의 파일을 리스트형식으로 쓰면 편함
for filepath in filepath_list:
    with open(filepath, 'rb') as f:
        filename = os.path.basename(filepath)
        cid = filename
        img_data = f.read()
        part = MIMEApplication(img_data, name=filename)
        part.add_header('Content-ID', '<' + cid + '>')
        message.attach(part)

with smtplib.SMTP_SSL('smtp.gmail.com', 465) as server:
    server.ehlo()
    server.login('matxzero@gmail.com', password)  
    server.send_message(message)

print('이메일을 발송했습니다.')
Password : ········
이메일을 발송했습니다.
In [5]:
filename
Out[5]:
'testing.png'
In [ ]: