from PIL import Image
import io
import numpy as np
import smtplib
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formatdate
title = 'Title'
mail_from = 'test0.163.com'
mail_from_passwd = 'passwd'
mail_to = ['test1.163.com', 'test2.163.com']
mail_cc = ['test3.163.com', 'test4.163.com']
text = 'begin of mail'
msg = MIMEMultipart()
msg['From'] = send_from
msg['To'] = ', '.join(mail_to)
msg['Cc'] = ', '.join(mail_cc)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = title
msg.attach(MIMEText(text, 'html'))
# read image file as raw data & convert to pillow.Image
img_file_path = '/home/user/Downloads/test_image.jpg'
with open(img_file_path, "rb") as file:
img = Image.open(io.BytesIO(file.read()))
w, h = img.size
# imgarr = np.asarray(img)
w0 = 200
h0 = int(h*w0/w)
imgrz = img.resize((w0, h0))
# convert pillow.Image to raw data
imgByteArr = io.BytesIO()
imgrz.save(imgByteArr, format='jpeg')
imgByteArr = imgByteArr.getvalue()
# attatch as attatchment
part = MIMEApplication(
imgByteArr,
Name='test_image.jpg'
)
part['Content-Disposition'] = 'attachment; filename="test_image.jpg"'
msg.attach(part)
# send email
smtp = smtplib.SMTP('163.com')
smtp.ehlo()
smtp.login(mail_from, mail_from_passwd)
smtp.sendmail(mail_from, mail_to+mail_cc, msg.as_string())
smtp.close()