返回顶部
首页 > 资讯 > 后端开发 > Python >Python中怎么自动化读取邮件
  • 899
分享到

Python中怎么自动化读取邮件

2023-06-15 18:06:04 899人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章将为大家详细讲解有关python中怎么自动化读取邮件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、poplib库poplib 模块提供了 poplib.POP3 和 poplib

这篇文章将为大家详细讲解有关python中怎么自动化读取邮件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一、poplib库

poplib 模块提供了 poplib.POP3 和 poplib.POP3_SSL 两个类,分别用于连接普通的 POP 服务器和基于  SSL 的 POP 服务器。连接到服务器后,按照 POP3 协议与服务器交互。

注意:虽然 POP3 得到了广泛支持,但已过时。POP3 服务器的实现质量差异很大,而且太多的服务器都很差。后面会介绍基于 IMAP 服务器的 imbox  库

下面以 QQ 邮箱为例示范如何完整 poplib 库的使用

1、创建连接

使用poplib.POP3_SSL创建连接

import poplib import email.parser, email.policy conn = poplib.POP3_SSL('pop.qq.com', 995)

2、登录服务器

注意输入的是邮箱授权码而不是真实 QQ 密码

conn.user('xxxx@qq.com')    conn.pass_('xxxx') # 注意输入的是邮箱授权码而不是真实 QQ 密码

3、获取邮件列表

response, maillist, r = conn.list() print('响应:', response) print('邮件列表:', maillist)

4、遍历邮件

multipart 代表邮件内容的容器,无需处理

msg = email.parser.BytesParser(policy=email.policy.default).parsebytes(data) for part in msg.walk():     # multipart 代表邮件内容的容器,无需处理     if part.get_content_type().split("/", 1)[0] == 'multipart':         continue     elif part.get_content_type().split("/", 1)[0] == 'text':         print(part.get_content())     else:             filename = part.get_filename()            print(filename)         with open(filename, 'wb') as f:             f.write(part.get_payload(decode=True))

多级判断的目的主要是跳过容器、输出正文、下载附件的本地

5、退出服务器

conn.quit()

常用的代码中有部分稍微繁琐,但整体还是比较好理解的

二 、imbox库

在正式介绍 imbox 库之前,再分享一个技巧。从上面 poplib  的代码中也可以看到,当输入密码(授权码)的时候是在代码中明文显示,这就带来了风险:

假如你不小心把这个代码没有处理就发给别人,或者上传的 GitHub,那么所有拿到这段代码的人都可以对你的邮箱大肆操作,这是很可怕的事情

这里读取邮件用的模块 imbox 也和 poplib 一样需要密码这个参数,但不希望在代码中明文呈现密码,怎么办?

”解决办法是利用 keyring 库,通过系统密钥环将密码(授权码),预先在本地存储好,后面在代码中调用 keyring  库的方法,通过账号把密码取出来作为变量就可以。

这样即使别人拿到了全部代码,但他的本地中没有预先配置好密码,就不会有泄露信息的风险了。具体使用方法为,首先打开命令行输入:

import keyring keyring.set_password("qqmail", "username", "passWord")

这样 password 在本地存储好了,后面只需要 keyring.get_password 获取作为变量即可:

import keyring password = keyring.get_password('qqmail', 'username')

用 imbox 读取邮件的代码如下:

import keyring  from imbox import Imbox password = keyring.get_password('qqmail', 'username')  with Imbox('imap.qq.com', 'xxx@qq.com', password, ssl=True) as imbox:      # 获取全部邮件     all_inbox_messages = imbox.messages()      for uid, message in all_inbox_messages:          print(message.subject)  # 邮件主题         print(message.body['plain']) # 邮件文本格式正文

Imbox('imap.qq.com', 'xxx@qq.com', password, ssl=True)  这行代码中需要填写服务器、用户名邮箱、密码、SSL加密循环体中 uid  参数是每封邮件的编号,邮件编号十分重要,可以用于邮件的标记和删除。除了邮件主题及文本格式正文外,我们主要常用获取以下内容:

Python中怎么自动化读取邮件

除了获取全部邮件用 all_inbox_messages = imbox.messages()  外,我们常常会有选择性获取已读、未读和红旗标记邮件:

unread_inbox_messages = imbox.messages(unread=True) # 未读邮件 read_inbox_messages = imbox.messages(unread=False) # 已读邮件 flagged_inbox_messages = imbox.messages(flagged=True) # 红旗标记邮件

也可以通过邮件的收件时间获取邮件:

Python中怎么自动化读取邮件

inbox_message_before = imbox.messages(date__lt=datetime.date(2021, 1, 18))  inbox_message_after = imbox.messages(date__gt=datetime.date(2021, 1, 18))  inbox_message_on_date = imbox.messages(date__on=datetime.date(2021, 1, 18))

那么如何筛选指定发件人发送的邮件呢?答案就在于对 message.sent_from 的理解了。message.sent_from  是一个字典元组,在遍历的过程中只需要简单通过 message.sent_from[0]['email']  就能够将发件人邮箱提取出来,接着做判断就能够达到目的:

with Imbox('imap.qq.com', 'xxx@qq.com', password, ssl=True) as imbox:  all_inbox_messages = imbox.messages()  for uid, message in all_inbox_messages:      print(message.subject)      print(message.sent_from)      print(message.body['plain'])      # 把邮箱提取出来      email = message.sent_from[0]['email']      if email == 某个特定的邮箱:          pass

上文还提到了邮件编号 uid 的重要性。基于编号的两个重要方法:

  • 标记已读 imbox.mark_seen(uid)

  • 删除邮件 imbox.delete(uid)

”使用以删除邮件为例:

for uid, message in all_inbox_messages:      if 满足某种条件的邮件:          imbox.delete(uid)

关于Python中怎么自动化读取邮件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Python中怎么自动化读取邮件

本文链接: https://lsjlt.com/news/281198.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中怎么自动化读取邮件
    这篇文章将为大家详细讲解有关Python中怎么自动化读取邮件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、poplib库poplib 模块提供了 poplib.POP3 和 poplib...
    99+
    2023-06-15
  • python 如何自动监控新邮件并读取
    本篇内容主要讲解“python 如何自动监控新邮件并读取”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python 如何自动监控新邮件并读取”吧!我就废话不多说了,大家还是直接看代码吧~#zma...
    99+
    2023-06-07
  • 怎么用Python自动化管理邮件
    本篇内容主要讲解“怎么用Python自动化管理邮件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python自动化管理邮件”吧!如果你来不及看,至少需要了解下面几个概念为了体现通用性,这次...
    99+
    2023-06-15
  • Python中怎么实现电子邮件的自动化
    这期内容当中小编将会给大家带来有关Python中怎么实现电子邮件的自动化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。用Python下载文件对于第一步,我们将需要使用HTTP请求实际下载数据文件。在本例中...
    99+
    2023-06-16
  • Python怎么实现自动化发送邮件
    这期内容当中小编将会给大家带来有关Python怎么实现自动化发送邮件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚...
    99+
    2023-06-26
  • Python中怎么读取Outlook的电子邮件
    这篇文章给大家介绍Python中怎么读取Outlook的电子邮件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先你需要导入 win32com.client,为此你需要安装 pywin32:pip insta...
    99+
    2023-06-17
  • Python怎么读取Outlook电子邮件
    这篇文章主要介绍“Python怎么读取Outlook电子邮件”,在日常操作中,相信很多人在Python怎么读取Outlook电子邮件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎么读取Outlo...
    99+
    2023-06-27
  • Python实现自动化发送邮件
    目录开门见山自动化发送邮件SMTP 介绍开启SMTP服务邮件的属性配置发送文本邮件发送HTML邮件发送附件邮件后记总结开门见山 自动化测试过程中,一般测试结果都会以邮件的形式发送给相...
    99+
    2024-04-02
  • Python读取邮箱中的邮件,含文本,附
    #-*- encoding: utf-8 -*- import sys import locale import poplib from email import parser import email import string # ...
    99+
    2023-01-31
    文本 邮箱 邮件
  • 怎么用Python自动群发邮件
    这篇文章主要讲解了“怎么用Python自动群发邮件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python自动群发邮件”吧!如何把收件人名字一一对应前提条件,我的解释器是 IDLE ...
    99+
    2023-06-16
  • Python自动化办公之Word文件内容的读取
    目录前言利用 python 批量读取文件word利器之python-docxpython-docx 安装python-docx 之 Documentpython-docx 之段落内容...
    99+
    2024-04-02
  • python开发_email_读取邮件头
    在python中的类库中,python自带了email模块。在email模块中,我们可以email类库实现对邮件的读取,和邮件的发送等功能。本文先来谈谈在python中,利用email模块读取邮件头.....先来看看一封百度云发给我的邮件:...
    99+
    2023-01-31
    邮件 python
  • 怎么用Python自动化管理Exchange邮箱
    本篇内容主要讲解“怎么用Python自动化管理Exchange邮箱”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python自动化管理Exchange邮箱”吧!Python是一种解释型、交...
    99+
    2023-06-15
  • python怎么实现自动化办公邮件合并功能
    本篇内容主要讲解“python怎么实现自动化办公邮件合并功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python怎么实现自动化办公邮件合并功能”吧!经常使用word办公的小伙伴们经常会遇到...
    99+
    2023-06-20
  • python读取邮件的方法是什么
    Python读取邮件的方法可以使用以下两个库实现:1. `imaplib`:这个库提供了IMAP(Internet Mail Acc...
    99+
    2023-09-07
    python
  • Python自动化办公之Excel拆分与自动发邮件
    目录需求需求解析代码实现需求 需要向大约 500 名用户发送带有 Excel 附件的电子邮件,同时必须按用户从主 Excel 文件中拆分数据以创建他们自己的特定文件,然后将该文件通过...
    99+
    2024-04-02
  • Python自动化办公之Excel拆分并自动发邮件
    需求需要向大约 500 名用户发送带有 Excel 附件的电子邮件,同时必须按用户从主 Excel 文件中拆分数据以创建他们自己的特定文件,然后将该文件通过电子邮件发送给正确的用户需求解析大致的流程就是上图,先拆分 Excel 数据,提取出...
    99+
    2023-05-14
    Python Excel 邮件
  • Python如何实现自动化邮件发送
    今天就跟大家聊聊有关Python如何实现自动化邮件发送,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,可以节省非常多的...
    99+
    2023-06-26
  • Python自动发邮件脚本
    缘起 这段时间给朋友搞了个群发邮件的脚本,为了防止进入垃圾邮件,做了很多工作,刚搞完,垃圾邮件进入率50%,觉得还不错,如果要将垃圾邮件的进入率再调低,估计就要花钱买主机了,想想也就算了,先发一个月,看看效...
    99+
    2022-06-04
    发邮件 脚本 Python
  • 怎么中python读取大文件
    本篇文章为大家展示了怎么中python读取大文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作