- 使用
smtplib
发送邮件
- 邮件带有附件,附件为图片
- 图片作为文件读取并与
PIL.Image
格式互换
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()