说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
drymail 是一个邮件发送库,封装了 Python 的 smtplib 和 email 库,让发送更加简单。它非常简洁,只有一个文件。
pip install drymail
主要的特性包括:
'John Doe'<john@email.com>
格式提及联系人最重要的是,该库极简,它不会像某些最先进的电子邮件框架那样以任何方式限制您。
在发送邮件之前需要去你使用的 QQ邮件、163 邮件等配置发件服务 SMTPMailer,可以去官方帮助文档中查看,再用 Message 对象构建邮件内容,Message.attach 可以构造附件,最后 SMTPMailer.send 将邮件内容发出。
from drymail import SMTPMailer, Message
# 配置发件服务
client = SMTPMailer(host='smtp.email.com', # 发件箱
user='johndoe',
password='password',
tls=True)
# 构造邮件
message = Message(subject='Congrats on the new job!', # 邮件主题
sender=('John Doe', 'john@email.com'), # 发件人
receivers=[('Jane Doe', 'jane@message.com'), # 收件人
'jane.doe@mail.io'],
cc=[('Jane Doe', 'jane@message.com')], # 抄送
bcc=['jane.doe@mail.io'], # 密送
text='When is the party? ;)', # 纯文本
html='<h1>Hello</h1>', # html 优先
)
# 构造附件
with open('congrats.pdf', 'rb') as pdf_file:
message.attach(filename='congrats.pdf',
data=pdf_file.read(),
mimetype='application/pdf')
# 发出邮件
client.send(message)
邮件正文纯文本是兼容最好的,但有时候我们需要显示富文本的内容,富文本是基于 html 代码制作,但需要注意以下两点:
CSS 样式内联式的兼容性是最好的,CSS 与 HTML 分离有些邮局不兼容,会失去样式。premailer
模块可以将分享和 CSS 与 html 内联式:
pip install premailer
使用时:
from premailer import transform
html = transform(html, remove_classes=True)
在邮件中不能直接引用图片,可使用以下方法使用图片的 base64 编码,再用 html 引用:
import base64
f = open('john-lennon.jpg', 'rb')
bs64 = base64.b64encode(f.read()).decode()
img_by_html = f"<img src='data:image/png;base64,{bs64}'/>"
# 在 notebook 中查看测试
from IPython.core.display import display, HTML
display(HTML(img_by_html))
img_by_html 是最终生成的显示图片的 html 代码,可以和其他正文 html 组合展示。
更新时间:2020-08-15 20:35:50 标签:python 邮件