办公室必备技能:不用VIP也可群发邮件


介绍

Zmail 使得在python3中发送和接受邮件变得更简单。你不需要手动添加服务器地址、端口以及适合的协议,zmail会帮你完成。此外,使用一个python字典来代表邮件内容也更符合直觉。

以上是我们今天群发邮件的主角,也是一个搬砖人办公室经常要用到的一个python入门利器,群发邮件靠他,要什么VIP。

以下内容需要基本的Python知识,如果你不具备,没关系,在本帖留言或者加站长微信,站长给你打包一个windows下双击即可运行使用的图形化软件:群发邮件工具,该工具终身维护,只为提供给咱们站的新老朋友。帮助大家在办公室更加自信的摸鱼看戏。

好东西别随便给别人,摸鱼名额有限,自己知道闷头搞。

安装

Zmail仅支持python3,不需要任何外部依赖. 不支持python2.

$ pip3 install zmail

特性

  • 自动寻找服务器地址以及端口
  • 自动使用可靠的链接协议
  • 自动将一个python字典映射成MIME对象(带有附件的)
  • 自动添加头文件以及localhostname来避免服务器拒收你的邮件
  • 轻松自定义你的头文件
  • 支持使用HTML作为邮件内容
  • 仅需python>=3.5,你可以将其嵌入你的项目而无需其他的依赖

是不是这个特性看起来那么晦涩?我也不懂,啥也别说了,直接上一个入门的代码,你就知道上面特性就是说这个工具很牛逼。

快速入门

import zmail
# 连接邮件服务器
# myself@qq.com是你自己的邮箱,abcdefghijk是你自己邮箱服务提供商给你的一个密码,需要自己去邮箱里面找。
server = zmail.server('myself@qq.com', 'abcdefghijk')
mail = {
    'subject': '这是一封测试邮件,勿回!',
    'content_html': '<h1>这是邮件的另外一个内容,支持html格式!</h1>',
    # 'content_text': '这里是邮件的文本内容,不支持html格式。',
    # 'attachments': ['path_to_file1.xlsx','path_to_file2.xls']
}
# 发送邮件
server.send_mail('xxx@qq.com', mail)
# 发送给很多人
# server.send_mail(['xxx@qq.com','yyy@qq.com'],mail)

跨越了上面这条线,你就入门了,接下来就是高级操作篇,有能力的继续学,不想动的找站长。


添加抄送

# 发送邮件的时候以一种谦卑的语气向领导报告自己已经完成邮件发送了。
server.send_mail('xxx@qq.com', mail,cc=[('亲爱的老板','boss@qq.com'),'boss@qq.com'])
# 如果不想那么谦卑,就直接把抄送的领导邮箱放在cc里面即可。
# server.send_mail('xxx@qq.com', mail,cc=['boss@qq.com'])
# 如果想抄送给很多人,就要像上面发送给很多人的接收邮箱一样,罗列很多邮箱在cc里面。
# server.send_mail('xxx@qq.com', mail,cc=['boss_董事长@qq.com','boss_总经理@qq.com','boss_科长@qq.com'])

取回你的邮件

  • 取得最新的邮件
import zmail
# 连接邮件服务器
server = zmail.server('myself@qq.com', 'abcdefghijk')
mail = server.get_latest()

以上方法即可将邮箱收件箱中的最新一封邮件存储在mail中,可以像发送邮件时候疯转的那几个信息获取邮件的内容。

  • 依据 (subject,after,before,sender)取回一个列表的邮件
mail = server.get_mails(subject='GitHub',after='2018-1-1',sender='github')

示例中, 如果 'GitHub' 在邮件的主题中,这封邮件将会被匹配, 例如' [GitHub] Your password has changed',sender亦是如此。以上方法可以取回2018年1月1日之后收件箱收到的邮件。

你也可以指定一个范围的邮件,也就是在start_time之后的10封邮件。

mail = server.get_mails(subject='GitHub',start_time='2018-1-1',sender='github',start_index=1,end_index=10)
  • 得到邮箱的信息
mailbox_info = server.stat()

结果为(邮件的数量, 邮箱的大小).


还有很多需要注意的地方,需要改进群发的方法,例如:

  • 逐一发送邮件时候需要防止邮件服务器拒绝服务,因为你短时间内发送邮件过多可能被认为是一个不法分子,搞垃圾广告或者发送钓鱼邮件等。
  • 发送邮件时候为了安全起见需要对附件进行自动压缩和加密,以保证保密性。
  • 需要针对不同的邮件接收人,使用不同的邮件正文内容。

以上这些都需要更加复杂的Python编程,如果你不具备编程基础,很难操作,不用担心,有站长在,本站提供专用邮件群发工具,迅速解决上面的问题。


以下是zmail支持的邮件服务商列表,理论上每个服务商取得密钥的方法不同。具体可以留言咨询。

支持的邮件服务商

列表中的邮件服务商已经被测试可正常使用

如果你的邮箱不在此列,请不要担心,目前尚未发现不支持的邮箱.如果你发现任何问题,请在GitHub上告知于我

服务商地址 发送邮件 取回邮件 备注
@163.com 需要应用专用密码
@qq.com POP3 需要应用专用密码
@126.com
@yeah.net
@gmail.com 需要应用专用密码
@sina.com
@outlook 需要应用专用密码
@hotmail 需要额外设置

支持的企业邮箱

名称 使用示例
腾讯企业邮箱 zmail.server('username','psw',config='qq')
阿里企业邮箱 zmail.server('username','psw',config='ali')
网易企业邮箱 zmail.server('username','psw',config='163')
谷歌企业邮箱 zmail.server('username','psw',config='google')