Python管理邮件的接收

AI悦创

共 3380字,需浏览 7分钟

 · 2021-02-26

库的安装

你好,我是悦创。既然可以发送邮件,就一定可以接收邮件,这两者是相互的。接收邮件,这里介绍 zmail 库,安装命令:

pip install zmail

zmail 支持邮件的发送和接收,操作的类型是字典。

准备初始化

接收邮件,同样是先初始化,如下代码:

import zmail
server = zmail.server('1432803776@qq.com','*************')

这里的 server 类似于一个邮箱客户端,可以通过 server 来取邮箱中收到的邮件,例如:

mail = server.get_latest()

这是获取邮箱中最后一个邮件,也就是最新的邮件。

接收邮件并展示

「mail 变量里面放着一封邮件,如何查看邮件内容?」使用如下代码:

zmail.show(mail)

展示邮件的全部内容,输出如下:

-------------------------
Subject [AI悦创] 请审核:“02 环境准备:在各系统中快速安装 Git 环境”
Id 134
From AI悦创 <1432803776@qq.com>
To 1432803776@qq.com
Date 2021-02-25 09:56:04+00:00
Content_text ['在《02 环境准备:在各系统中快速安装 Git 环境》中有一条评论等待您的审核\r\nhttps://www.aiyc.top/1514.html\r\n\r\n作者:22(IP地址:121.205.195.226,226.195.205.121.broad.pt.fj.dynamic.163data.com.cn)\r\n电子邮箱:2273947745@qq.com\r\nURL:http://2\r\n评论:\r\n11\r\n\r\n批准:https://www.aiyc.top/wp-admin/comment.php?action=approve&c=195#wpbody-content\r\n移至回收站:https://www.aiyc.top/wp-admin/comment.php?action=trash&c=195#wpbody-content\r\n标记为垃圾评论:https://www.aiyc.top/wp-admin/comment.php?action=spam&c=195#wpbody-content\r\n当前有1条评论等待审核。请移步审核页面来查看:\r\nhttps://www.aiyc.top/wp-admin/edit-comments.php?comment_status=moderated#wpbody-content\r\n']
Content_html []
Attachments

我的邮件内容如下:这里的内容都是成对出现的,例如 Subject  [AI悦创] 请审核:“02 环境准备:在各系统中快速安装 Git 环境”,都是一对一对的,所以这里的内容也是列表格式。

如果你直接输出 mail 的内容,如下截图:这里的展示更明显,而且内容更直观,有大括号,是列表格式。既然是字典格式,取出单个内容,就可以用字典的取值方式,如下:

print(mail['subject'], mail['from'], mail['date'], sep='\n')
''' 下面是输出内容
[AI悦创] 请审核:“02 环境准备:在各系统中快速安装 Git 环境”
AI悦创 <1432803776@qq.com>
2021-02-25 09:56:04+00:00
'
''

读取了邮件的标题、发送者、发送时间这三个信息。

下面来展示下邮件对象,所有的键,如下代码:

tmail = server.get_mail(1)
for m in tmail:
print(m)

''' 下面是输出
content_text # 文本内容
content_html # HTML格式内容
attachments # 附件
headers # 头部信息,字典格式
raw_headers # 头部信息,列表中嵌套元组格式
charsets # 文字编码
subject # 邮件标题
date # 发送日期
from # 发送者
to # 接受者
id # id值,代表第几封邮件
raw # 头部信息,列表中嵌套字节字符串格式
'
''

接收邮件,可以一封一封的接收,还可以按标题、日期、发送者等信息过滤并接收,下面展示一下按标题信息过滤并接收一批邮件,如下代码:

tmails = server.get_mails(subject='测试邮件的标题')
len(tmails)
for t in tmails:
print(t['subject'], t['from'])
'''
19
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题【无HTML】 "1432803776@qq.com" <1432803776@qq.com>
测试邮件的标题【有HTML】 "1432803776@qq.com" <1432803776@qq.com>
'
''

首先是 get_emails 函数,这是获取一批邮件,函数中指定邮件标题 subject,必须包含了“测试邮件的标题”字段。 得到的邮件列表,存放在 tmails 变量中,一共有 19 封邮件。 然后循环取出每个邮件的标题和发信人,就得到一大串的信息输出。

长按识别下方二维码,和众多位岛民一起

把别人的顿悟,变成你的基本功


 花半秒钟就看透事物本质的人,
  和花一辈子都看不清的人,
  注定是截然不同的命运。

浏览 20
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报