去年写过一篇使用smtplib发送邮件的文章,有朋友留言问如何发送附件。smtplib是可以发送附件的,但看过文档觉得还是有点复杂,我用的是Envelopes这个库发送附件。
一. Envelopes简介
Envelopes简介就一句话:Mailing for human beings(竟然跟requests一样)。Envelopes是对Python的email
和smtplib
库进行封装,使其对email的操作更方便简单。
二. 下载安装
- 如果是linux系统,直接使用
pip install envelopes
即可安装; - 如果是win系统,需要在这里下载文件压缩包,解压之后使用
python setup.py install
安装。
三. 使用指南
Envelopes还是挺简单的,直接看代码就能看懂了,下面是示例代码:
from envelopes import Envelope # import envelopes
envelope = Envelope( # 实例化Envelope
from_addr=(u'from@example.com', u'From Example'), # 必选参数,发件人信息。前面是发送邮箱,后面是发送人;只有发送邮箱也可以
to_addr=(u'to@example.com', u'To Example'), # 必选参数,发送多人可以直接(u'user1@example.com', u'user2@example.com')
subject=u'Envelopes demo', # 必选参数,邮件标题
html_body=u'<h1>活着之上</h1><h2>作者:阎真</h2>', # 可选参数,带HTML的邮件正文
text_body=u"I'm a helicopter!", # 可选参数,文本格式的邮件正文
cc_addr=u'boss1@example.com', # 可选参数,抄送人,也可以是列表形式
bcc_addr=u'boss2@example.com', # 可选参数,隐藏抄送人,也可以是列表
headers=u'', # 可选参数,邮件头部内容,字典形式
charset=u'', # 可选参数,邮件字符集
)
envelope.add_attachment('/Users/bilbo/Pictures/helicopter.jpg') # 增加附件,注意文件是完整路径,也可以加入多个附件
# Send the envelope using an ad-hoc connection...
envelope.send('smtp.163.com', login='from@example.com',
password='password', tls=True) # 发送邮件,分别是smtp服务器,登陆邮箱,登陆密码,tls设置
如果是用gmail或sendgrid发送,可以用设置好的链接,如:
gmail = GMailSMTP('from@example.com', 'password') # 已设置好smtp信息,直接输入账号密码即可
gmail.send(envelope) # 发送邮件主题
四. 参考文档
Envelopes官方文档:https://tomekwojcik.github.io/envelopes/
Envelopes的Envelope class:https://tomekwojcik.github.io/envelopes/api/envelope.html