当梦想照进现实

Python用Envelopes发送邮件和附件

2015.04.28

email神预言

去年写过一篇使用smtplib发送邮件的文章,有朋友留言问如何发送附件。smtplib是可以发送附件的,但看过文档觉得还是有点复杂,我用的是Envelopes这个库发送附件。

一. Envelopes简介

Envelopes简介就一句话:Mailing for human beings(竟然跟requests一样)。Envelopes是对Python的emailsmtplib库进行封装,使其对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

Comments
Write a Comment