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 26 Python
合并百度影音的离线数据( with python 2.3)
Aug 04 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
opencv python 傅里叶变换的使用
Jul 21 Python
pyqt5实现俄罗斯方块游戏
Jan 11 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
Feb 26 Python
selenium+python配置chrome浏览器的选项的实现
Mar 18 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
Apr 14 Python
如何在python中判断变量的类型
Jul 29 Python
Python 远程开关机的方法
Nov 18 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
Dec 08 Python
Python离线安装openpyxl模块的步骤
Mar 30 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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
怎样才能成为PHP高手?学会“懒惰”的编程
2006/12/05 PHP
利用PHP和AJAX创建RSS聚合器的代码
2007/03/13 PHP
php采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
PHP基于imap获取邮件实例
2014/11/11 PHP
PHP实现文件下载详解
2014/11/27 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
HR vs CL BO3 第一场 2.13
2021/03/10 DOTA
使用js检测浏览器的实现代码
2013/05/14 Javascript
js重写方法的简单实现
2016/07/10 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
2017/06/21 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
vue父子模板传值问题解决方法案例分析
2020/02/26 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
Python中os.path用法分析
2015/01/15 Python
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
在Django的URLconf中使用命名组的方法
2015/07/18 Python
pandas string转dataframe的方法
2018/04/11 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
python在回调函数中获取返回值的方法
2019/02/22 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
在PyCharm中安装PaddlePaddle的方法
2021/02/05 Python
美国钻石商店:Zales
2016/11/20 全球购物
小学英语教师先进事迹
2014/05/28 职场文书
学生吸烟检讨书
2014/09/14 职场文书
群众路线教育查摆剖析材料
2014/10/10 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
2022/04/11 Vue.js