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对数据库操作
Mar 28 Python
Python中的is和==比较两个对象的两种方法
Sep 06 Python
NetworkX之Prim算法(实例讲解)
Dec 22 Python
教你用Python写安卓游戏外挂
Jan 11 Python
在Python中输入一个以空格为间隔的数组方法
Nov 13 Python
Python实现删除排序数组中重复项的两种方法示例
Jan 31 Python
详解Python3 对象组合zip()和回退方式*zip
May 15 Python
Python中面向对象你应该知道的一下知识
Jul 10 Python
Django 导出项目依赖库到 requirements.txt过程解析
Aug 23 Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
解决python脚本中error: unrecognized arguments: True错误
Apr 20 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
PHP+DBM的同学录程序(2)
2006/10/09 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
实现PHP搜索加分页
2016/10/12 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
extjs form textfield的隐藏方法
2008/12/29 Javascript
treepanel动态加载数据实现代码
2012/12/15 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
jQuery ajax分页插件实例代码
2016/01/27 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
webpack优化的深入理解
2018/12/10 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
Python地图绘制实操详解
2019/03/04 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
2014年客房服务员工作总结
2014/11/18 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
合同范本之电脑出租
2019/08/13 职场文书