python Zmail模块简介与使用示例


Posted in Python onDecember 19, 2020

介绍

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

安装

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

pip3 install zmail

特性 

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

使用须知

使用它之前,请保证

  • 使用Python3
  • 确保打开了邮箱的POP3和SMTP功能 (对于 @163.com 和 @gmail.com 你需要设置你的应用专用密码)

然后,剩下你需要做的就是import zmail即可

使用示例

发送你的邮件

import zmail

# 你的邮件内容
mail_content = {
 "subject":"success!", # 邮件主题
 "content_text":"This message from zmail", # 邮件内容
 "attachments":r"D:\test.docx", # 邮件附件
}

# 使用你的邮件账户名和密码登录服务器
server = zmail.server("XXXXXX@163.com", "XXXXXX")

# 发送邮件
server.send_mail('yourfriend@example.com', mail_content)

给多个信箱发件,修改发送邮件 即可,其他内容同上

# 发送邮件

server.send_mail(['555555@qq.com','666666@qq.com'],mail_content)

发送HTML作为邮件内容

mail = {
 'subject': 'Success!', # 邮件主题
 'content_html': ['HTML CONTENT'], # HTML格式的邮件内容 
 'attachments': '/Users/zyh/Documents/example.zip', # 邮件附件
}
server.send_mail('yourfriend@example.com',mail)

或者

with open('/Users/example.html','r') as f:
 content_html = f.read()
mail = {
 'subject': 'Success!', 
 'content_html': content_html, 
 'attachments': '/Users/zyh/Documents/example.zip', 
}
server.send_mail('yourfriend@example.com',mail)
  • 自定义你的server

如果zmail不能正常工作,你可以自定义server的配置

server = zmail.server('username','password',smtp_host='smtp.163.com',smtp_port=994,smtp_ssl=True,pop_host='pop.163.com',pop_port=995,pop_tls=True)

取回你的邮件

  • 取得最新的邮件
import zmail
server = zmail.server('yourmail@example.com', 'yourpassword')
mail = server.get_latest()
  • 依据id取回邮件
mail = server.get_mail(2)
  • 依据 (subject,after,before,sender)取回一个列表的邮件
mail = server.get_mails(subject='163',after='2018-1-1',sender='github')

示例中, 如果 '163' 在邮件的主题中,这封邮件将会被匹配, 例如' [163] Your password has changed'

邮件的结构

  • content-type: 邮件内容的类型
  • subject: 邮件主题
  • to:收件人
  • from:寄件人
  • date: 年-月-日 时间 时区
  • boundary: 如果邮件为multiple - - - parts,你可以得到其分界线
  • content: 邮件的文本内容(仅在text/plain时可以被解析)
  • contents: 邮件的body,里面包含着由分界线分割的每一个段落
  • attachments: None 或者 [['附件名称;编码方式','附件的二进制内容']...]
  • id: 在邮箱中的id

项目地址: 

GitHub:https://github.com/ZYunH/zmail 

以上就是python Zmail模块简介与使用示例的详细内容,更多关于python Zmail模块的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现通过代理服务器访问远程url的方法
Apr 29 Python
Python如何import文件夹下的文件(实现方法)
Jan 24 Python
浅谈python中的__init__、__new__和__call__方法
Jul 18 Python
通过python+selenium3实现浏览器刷简书文章阅读量
Dec 26 Python
Python解析并读取PDF文件内容的方法
May 08 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
Jun 27 Python
Python实现点阵字体读取与转换的方法
Jan 29 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
python处理document文档保留原样式
Sep 23 Python
python可视化text()函数使用详解
Feb 11 Python
Python 里最强的地图绘制神器
Mar 01 Python
python中实现栈的三种方法
Dec 19 #Python
python中实现词云图的示例
Dec 19 #Python
python 实现图片批量压缩的示例
Dec 18 #Python
python 基于opencv实现高斯平滑
Dec 18 #Python
python爬取代理ip的示例
Dec 18 #Python
用Python 执行cmd命令
Dec 18 #Python
Django用内置方法实现简单搜索功能的方法
Dec 18 #Python
You might like
php中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
2017/09/15 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
php redis setnx分布式锁简单原理解析
2020/10/23 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
如何确保JavaScript的执行顺序 之实战篇
2011/03/03 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
2015/12/11 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
2017/03/06 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
2018/05/25 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
关于微信小程序bug记录与解决方法
2018/08/15 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
layui实现左侧菜单点击右侧内容区显示
2019/07/26 Javascript
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
Python脚本处理空格的方法
2016/08/08 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
python中字符串的操作方法大全
2018/06/03 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
银行求职信个人范文
2013/12/16 职场文书
《要下雨了》教学反思
2014/02/17 职场文书
应聘教师自荐信
2015/03/26 职场文书
十大最强格斗系宝可梦,超梦X仅排第十,第二最重格斗礼仪
2022/03/18 日漫