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统计文件行数示例分享
Feb 21 Python
Python编程中装饰器的使用示例解析
Jun 20 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
Dec 03 Python
解决Python安装后pip不能用的问题
Jun 12 Python
django从请求到响应的过程深入讲解
Aug 01 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
Feb 25 Python
使用python实现抓取腾讯视频所有电影的爬虫
Apr 15 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
python中使用input()函数获取用户输入值方式
May 03 Python
python时间time模块处理大全
Oct 25 Python
jupyter notebook更换皮肤主题的实现
Jan 07 Python
在 Python 中利用 Pool 进行多线程
Apr 24 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的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
Jquery Ajax的Get方式时需要注意URL地方
2011/04/07 Javascript
jQuery EasyUI API 中文文档 - EasyLoader 加载器
2011/09/29 Javascript
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
js替换字符串的所有示例代码
2013/07/23 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
vue-列表下详情的展开与折叠案例
2020/07/28 Javascript
python引用DLL文件的方法
2015/05/11 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
Python实现DDos攻击实例详解
2019/02/02 Python
Python中请不要再用re.compile了
2019/06/30 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
python+selenium实现12306模拟登录的步骤
2021/01/21 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
荷兰手表网站:Watch2Day
2018/07/02 全球购物
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
中西医专业毕业生职业规划书
2014/02/24 职场文书
出纳试用期自我评价
2015/03/10 职场文书
Go归并排序算法的实现方法
2022/04/06 Golang