python Zmail模块简介与使用示例
作者:德辰 发布时间:2023-07-23 23:42:37
介绍
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
来源:https://www.cnblogs.com/zhouyxh/p/12320708.html


猜你喜欢
- 面向对象编程的2个非常重要的概念:类和对象对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另
- 转发时请保留此声明信息,这段声明不并会影响你的速度! @author:  
- 我们经常用到的PHP取整函数,主要是:ceil,floor,round,intval。ceil -- 进一法取整说明float ceil (
- 同MongoDB,Redis这样的NoSQL数据库的复制相比,MySQL复制显得相当复杂!概述首先主服务器把数据变化记录到主日志,然后从服务
- 什么是死锁,在Go的协程里面死锁通常就是永久阻塞了,你拿着我的东西,要我先给你然后再给我,我拿着你的东西又让你先给我,不然就不给你。我俩都这
- 本文研究的主要是python+matplotlib实现动态绘制图片(交互式绘图)的相关内容,具体介绍和实现代码如下所示。最近在研究动态障碍物
- 如下所示:#coding=utf-8#方式一print('*'*20 + '方式一' + '*
- 程序运行,产生如下结果,然后进程终止,导致这一结果的原因很有可能是内存 * 。当两个较大的 (e.g., 10000*10000 维)ndar
- 数在 Python 中,对数的规定比较简单,基本在小学数学水平即可理解。那么,做为零基础学习这,也就从计算小学数学题目开始吧。因为从这里开始
- http请求介绍HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTT
- Python 是一种美丽的语言,它简单易用却非常强大。但你真的会用 Python 的所有功能吗?任何编程语言的高级特征通常都是通过大量的使用
- python学生成绩管理系统创建,供大家参考,具体内容如下要求编写学生类,班级类,并在电脑运行生成表单,输入一个数字,得到对应的结果。输出样
- 不过首先你会发现,你在不同的地区或者不同的网络(电信、联通、移动)的情况下,转换后的IP地址很可能是 不一样的,这首先涉及到负载均衡的第一步
- 这是一家游戏公司,他面试通过后 擅长的机试却没答出来,不过还是被录用了。这道题内容大概这样有条蛇它长度不固定,蛇头朝北顺时针盘旋着,请打印出
- 如何用HtmlEncode来显示Unicode? 见下:<%@ Language=VBS
- 本文实例讲述了python获得两个数组交集、并集、差集的房部分。分享给大家供大家参考。具体如下:1. 获取两个list 的交集#方法一:a=
- 在JavaScript中,数组本质上是一种特殊的对象,它的类型值会返回 object。如果我们需要比较两个数组是否相等,不能像比较基本类型(
- 在之前介绍PyQtGraph的文章中,我们都是一次性的获取数据并将其绘制为图形。然而在很多场景中,我们都需要对实时的数据进行图形化展示,比如
- 可以自动轮换的页签 tabs with auto play fucntion<html><head><meta
- 表示文字链接最清楚的方式是“蓝色文字+下划线”,这是在浏览器发展过程中形成的。这个问题大家都说过很多次了,我也曾经说过。然而,这样的规范却总