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中测试访问同一数据的竞争条件的方法
Apr 23 Python
在Python的Django框架中用流响应生成CSV文件的教程
May 02 Python
python使用arcpy.mapping模块批量出图
Mar 06 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
Dec 05 Python
python 计算一个字符串中所有数字的和实例
Jun 11 Python
Python QQBot库的QQ聊天机器人
Jun 19 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
python爬虫 线程池创建并获取文件代码实例
Sep 28 Python
如何基于Python创建目录文件夹
Dec 31 Python
Python Numpy库常见用法入门教程
Jan 16 Python
解决django FileFIELD的编码问题
Mar 30 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 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抓取https的内容的代码
2010/04/06 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
Smarty模板语法详解
2019/07/20 PHP
js select常用操作控制代码
2010/03/16 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
Python生成器定义与简单用法实例分析
2018/04/30 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
python 修改本地网络配置的方法
2019/08/14 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
基于pytorch中的Sequential用法说明
2020/06/24 Python
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
俄罗斯最大的隐形眼镜销售网站:Ochkov.Net
2021/02/07 全球购物
企业总经理助理岗位职责
2014/09/12 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
物业保洁员管理制度
2015/08/05 职场文书
职工食堂管理制度
2015/08/06 职场文书
人民调解协议书
2016/03/21 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA