Zmail--永不拒信,发送简单的python邮件模块
2018-02-08 17:06
357 查看
发送邮件是个很简单的需求,但是在实际的使用中依然碰到了很多坑,因此创建了zmail这个项目,让你使用python发送邮件的过程尽可能简单。
构造太麻烦:特别是添加附件的时候,有些还需要额外去自定义类型,体验很差。
发送太麻烦:你需要找到你服务商的smtp地址,端口号,有些服务商不是默认的端口(@163.com),有些只能SSL验证(@qq.com),有些需要TLS(@gmailcom),一个不小心就发送失败。
引入过多的外部包:一些轮子引入了好几个包,可能会造成包与原来的程序版本冲突(常见于requests之类的包),并且发生错误无法得到及时的文档支持。在我尝试发送失败后,使用django的email模块成功发送了邮件,但是django的目的显然不是这个,使用一个如此大的框架来实现那么小的需求显然不合理(并且构造过程依然复杂)。
将一个字典映射为email,构造信件就像构造字典一样简单
自动寻找邮件服务商端口号地址,自动选择合适的协议(经过认证的)
只依赖于python3,嵌入其他项目时无需烦恼
嵌入到已有的项目中实现功能
自定义邮件发送过程,诸如准点发送、定时发送等
也可以使用pip代替pip3
注意:zmail仅支持python3,不支持python2
为你的邮件添加附件,修改 你的邮件内容 即可,其他内容同上
给多个信箱发件,修改 发送邮件 即可,其他内容同上
添加额外的头信息,直接加入到mail_content即可
不在此列表也无需担心,经过测试,目前尚未发现不支持的邮件服务商,如果遇到问题请及时联系作者(本平台或github)
GitHub地址:https://github.com/ZYunH/zmail ,觉得ok请star或者fork!!!
其他轮子的缺点:
服务端拒信:首要问题。很多其他的轮子需要自己构造MIME和邮件头(通常优化了过程),但经常遭遇拒信,具体原因是其没有正确的定义邮件头,诸如From和To的头信息在使用SMTP时每家服务商检查都会有细微的差别,以及一些平台的差异(win10 localhost乱码导致发件拒信),甚至在你发往不同的地址检查也会有差别(国内发国外需要额外验证一些信息预防垃圾邮件)。构造太麻烦:特别是添加附件的时候,有些还需要额外去自定义类型,体验很差。
发送太麻烦:你需要找到你服务商的smtp地址,端口号,有些服务商不是默认的端口(@163.com),有些只能SSL验证(@qq.com),有些需要TLS(@gmailcom),一个不小心就发送失败。
引入过多的外部包:一些轮子引入了好几个包,可能会造成包与原来的程序版本冲突(常见于requests之类的包),并且发生错误无法得到及时的文档支持。在我尝试发送失败后,使用django的email模块成功发送了邮件,但是django的目的显然不是这个,使用一个如此大的框架来实现那么小的需求显然不合理(并且构造过程依然复杂)。
Zmail的优势:
自动填充大多数导致服务端拒信的头信息(From To LocalHost之类的)将一个字典映射为email,构造信件就像构造字典一样简单
自动寻找邮件服务商端口号地址,自动选择合适的协议(经过认证的)
只依赖于python3,嵌入其他项目时无需烦恼
你可以使用zmail来:
作为监控脚本的发送邮件模块,及时传递信息嵌入到已有的项目中实现功能
自定义邮件发送过程,诸如准点发送、定时发送等
安装
$ pip3 install zmail
也可以使用pip代替pip3
注意:zmail仅支持python3,不支持python2
简单的例子
使用前注意,所有邮箱都要开启SMTP功能,@163.com和@gmail.com 的邮箱需要额外设定SMTP密码,网上很多信息,具体自行百度google,这里先行省略。发送邮件
import zmail # 你的邮件内容 mail_content = { 'subject': 'Success!', # 随便填写 'content': 'This message from zmail!', # 随便填写 } # 使用你的邮件账户名和密码登录服务器 server = zmail.server('12345678@qq.com, '你的qq邮箱密码') # 发送邮件 server.send_mail('555555@qq.com', mail)
为你的邮件添加附件,修改 你的邮件内容 即可,其他内容同上
# 你的邮件内容 mail_content = { 'subject': 'Success!', # 随便填写 'content': 'This message from zmail!', # 随便填写 'attachments': '/Users/zyh/Documents/example.zip', # 最好使用绝对路径,若你电脑没有这个文件会造成错误 }
给多个信箱发件,修改 发送邮件 即可,其他内容同上
# 发送邮件 server.send_mail(['555555@qq.com','666666@qq.com'], mail)
添加额外的头信息,直接加入到mail_content即可
认证过的服务商列表:
地址 | SMTP |
---|---|
@qq.com | ✓ |
@126.com | ✓ |
@yeah.net | ✓ |
@gmail.com | ✓ |
@sina.com | ✓ |
@163.com | ✓ |
更多
zmail的POP3功能请看GitHub介绍相关文章推荐
- 利用python的zmail模块发送邮件
- python常用模块email----创建简单的文本邮件并发送
- python_使用email模块发送简单邮件
- 二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
- Python实现的简单发送邮件脚本分享
- 用smtplib和email封装python发送邮件模块类分享
- python邮件发送smtplib模块入门
- python自动化--模块之操作日志、加密、发送邮件
- 使用python发送简单的邮件
- python最简单发送邮件
- Python模块探秘之一:smtplib,实现纯文本邮件的发送
- python学习笔记之使用smtplib模块发送邮件
- python使用smtplib模块通过gmail实现邮件发送的方法
- python smtplib 模块发送邮件
- 使用python发送简单的邮件
- python之简单邮件发送(带附件、图片)
- python模块学习 ---- smtplib 邮件发送
- python smtplib模块发送SSL/TLS安全邮件实例
- python之smtplib模块 发送邮件
- python模块之smtplib: 用python发送SSL/TLS安全邮件