返回顶部
首页 > 资讯 > 后端开发 > Python >怎么用Python自动化管理邮件
  • 811
分享到

怎么用Python自动化管理邮件

2023-06-15 17:06:40 811人浏览 泡泡鱼

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

摘要

本篇内容主要讲解“怎么用python自动化管理邮件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python自动化管理邮件”吧!如果你来不及看,至少需要了解下面几个概念为了体现通用性,这次

本篇内容主要讲解“怎么用python自动化管理邮件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python自动化管理邮件”吧!

如果你来不及看,至少需要了解下面几个概念

怎么用Python自动化管理邮件

为了体现通用性,这次我们再换一个邮箱讲解,下面的案例均以 88 完美邮箱 为例示范,本文主要将分为下面两个部分介绍

  • imbox 收取邮件

  • openpyxl 写入 excel 文件

案例一

“将邮箱里所有邮件的相关信息存到 Excel 中备份

”要解决这个需求,首先我们利用 keyring 库,通过系统密钥环将开启  IMAP/SMTP服务后获得的密码(授权码)预先在本地存储好。首先打开命令行输入python后输入:

import keyring keyring.set_password("88mail", "test@88.com", "passWord")

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

import keyring password = keyring.get_password('88mail', 'test@88.com')

打开 88 邮箱的网页版,进一步确认是否配置是否完成,以及服务器邮箱:

怎么用Python自动化管理邮件

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

import keyring  from imbox import Imbox password = keyring.get_password('88mail', 'test@88.com')  with Imbox('imap.88.com', 'test@88.com', password, ssl=True) as imbox:      # 获取全部邮件     all_inbox_messages = imbox.messages() # 获取全部邮件     for uid, message in all_inbox_messages:         print(uid) # 邮件编号         print(message.sent_from) # 发件人         print(message.subject)  # 邮件主题         print(message.date) # 日期         print(message.body['plain']) # 邮件文本格式正文         print(message.attachments) # 附件

关于上面的代码有几个地方需要注意一下:

  • Imbox('imap.qq.com', 'xxx@qq.com', password, ssl=True)  这行代码中需要填写服务器、用户名邮箱、密码、SSL加密

  • 循环体中 uid 参数是每封邮件的编号,邮件编号十分重要,可以用于邮件的标记和删除

  • message.sent_from 返回一个包裹字典的列表,这个字典有两个键:name 和 email,name 即用户名(或昵称),email  是发件人的邮箱

  • message.date 获取的字符串内容如 'Tue, 3 Nov 2020 08:08:16 +0800 (GMT+08:00)' ,一个 GMT  格式的时间,我们需要将它转化为正常的日期(年月日)+时间(时分秒),也就是将 GMT 时间格式的字符串转换成datetime 类型,可以通过下面的代码:

import datetime  date = 'Tue, 3 Nov 2020 08:08:16 +0800 (GMT+08:00)' GMT_FORMAT = '%a, %d %b %Y %H:%M:%S +0800 (GMT+08:00)'  print(datetime.datetime.strptime(date, GMT_FORMAT)) # 2020-11-03 08:08:16

同样需要注意的是

message.body['plain'] 正文以字符串列表形式返回

message.attachments 输出结果举例如下:

[{'content-type': 'application/x-zip-compressed', 'size': 1160851, 'content': <_io.BytesIO object at 0x046A7B68>, 'filename': 'xxxx.zip'}]

也是一个字典列表,一个附件为一个字典,包括 content-type size content filename 4  个键,即类型、大小、内容、文件名。若无附件则返回空列表。

有了上面的知识我们就可以重新把邮件的关键信息都解析成字符串形式方便存储:

import keyring  from imbox import Imbox import datetime  password = keyring.get_password('88mail', 'test@88.com')  with Imbox('imap.88.com', 'test@88.com', password, ssl=True) as imbox:      all_inbox_messages = imbox.messages() # 获取全部邮件     for uid, message in all_inbox_messages:         name = message.sent_from[0]['name'] # 发件人姓名         email = message.sent_from[0]['email'] # 发件人邮箱         title = message.subject          GMT_FORMAT = '%a, %d %b %Y %H:%M:%S +0800 (GMT+08:00)'         email_datetime = str(datetime.datetime.strptime(message.date, GMT_FORMAT))         email_date = email_datetime.strip()[0] # 发送日期         email_time = email_datetime.strip()[1] # 发送时间          text = message.body['plain'] # 文本格式正文         attachment_lst = []         attachments = ''         if message.attachments:             for attachment in message.attachments:                 attachment_lst.append(attachment['filename'])             attachments = ', '.join(attachment_lst)         print(uid, name, email, title, email_date, email_time)         print(text, attachments if attachments else '无')

接着利用 openpyxl 写入上述信息即可,首先在程序开头创建好表头,明确存储的信息:

from openpyxl import Workbook  workbook = Workbook() # 创建新工作簿 sheet = workbook.active heading = ['邮件名', '发件人姓名', '发件人邮箱', '发送日期', '发送时间', '邮件正文', '附件'] sheet.append(heading)

后面随着邮件的遍历将内容写入表格即可。案例一的完整代码如下:

import keyring from imbox import Imbox import datetime from openpyxl import Workbook  workbook = Workbook() # 创建新工作簿 sheet = workbook.active heading = ['邮件名', '发件人姓名', '发件人邮箱', '发送日期', '发送时间', '邮件正文', '附件'] sheet.append(heading)  password = keyring.get_password('88mail', 'test@88.com')  with Imbox('imap.88.com', 'test@88.com', password, ssl=True) as imbox:      all_inbox_messages = imbox.messages() # 获取全部邮件     for uid, message in all_inbox_messages:         name = message.sent_from[0]['name'] # 发件人姓名         email = message.sent_from[0]['email'] # 发件人邮箱         title = message.subject          GMT_FORMAT = '%a, %d %b %Y %H:%M:%S +0800 (GMT+08:00)'         email_datetime = str(datetime.datetime.strptime(message.date, GMT_FORMAT))         email_date = email_datetime.strip()[0] # 发送日期         email_time = email_datetime.strip()[1] # 发送时间          text = message.body['plain'] # 文本格式正文         attachment_lst = []         attachments = ''         if message.attachments:             for attachment in message.attachments:                 attachment_lst.append(attachment['filename'])             attachments = ', '.join(attachment_lst)         sheet.append([title, name, email, email_date, email_time, text, attachments])  workbook.save('xxxxx.xlsx')

案例二

“备份收件箱中所有小明(xiaoming@qq.com)发来的邮件至 Excel,然后删除这些邮件

”其实如果顺利理解了案例一,那么这个案例就特别简单了 从上面的案例中我们知道,通过下面的代码就可以获取发件人邮箱:

with Imbox('imap.88.com', 'test@88.com', password, ssl=True) as imbox:      all_inbox_messages = imbox.messages()      for uid, message in all_inbox_messages:         email = message.sent_from[0]['email'] # 发件人邮箱

那么只需要在这个基础上判断 if email == 'xiaoming@qq.com' 就可以往后执行相应代码了。另外,删除邮件是基于邮箱编号 uid  的,代码为 imbox.delete(uid) ,具体代码举例:

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

那么,我们综合上述两个知识点以及案例一的知识延伸,就很好写出案例二的代码了:

import keyring from imbox import Imbox import datetime from openpyxl import Workbook  workbook = Workbook()  sheet = workbook.active heading = ['邮件名', '发件人姓名', '发件人邮箱', '发送日期', '发送时间', '邮件正文', '附件'] sheet.append(heading)  password = keyring.get_password('88mail', 'test@88.com')  with Imbox('imap.88.com', 'test@88.com', password, ssl=True) as imbox:      all_inbox_messages = imbox.messages()      for uid, message in all_inbox_messages:         email = message.sent_from[0]['email']          if email == 'xiaoming@qq.com': # 在此处判断发件人             name = message.sent_from[0]['name']             title = message.subject             GMT_FORMAT = '%a, %d %b %Y %H:%M:%S +0800 (GMT+08:00)'             email_datetime = str(datetime.datetime.strptime(message.date, GMT_FORMAT))             email_date = email_datetime.strip()[0]             email_time = email_datetime.strip()[1]             text = message.body['plain']             attachment_lst = []             attachments = ''             if message.attachments:                 for attachment in message.attachments:                     attachment_lst.append(attachment['filename'])                 attachments = ', '.join(attachment_lst)             sheet.append([title, name, email, email_date, email_time, text, attachments])             imbox.delete(uid) # 在此处删除符合要求的邮件               workbook.save('xxxxx.xlsx')

案例三

“备份收件箱中标题含有 “奖金” 的邮件至 Excel,然后红旗标记这些邮件

”基本思路跟案例二类似,不过多展开讲,只复习两个知识点。要判断标题是否有“奖金”二字:

with Imbox('imap.88.com', 'test@88.com', password, ssl=True) as imbox:      all_inbox_messages = imbox.messages()      for uid, message in all_inbox_messages:         title = message.subject         if '奖金' in title:             pass

红旗标记邮件也删除邮件一样,也是基于邮箱编号 uid 的,具体代码举例:

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

故案例三的完整代码如下:

import keyring from imbox import Imbox import datetime from openpyxl import Workbook  workbook = Workbook()  sheet = workbook.active heading = ['邮件名', '发件人姓名', '发件人邮箱', '发送日期', '发送时间', '邮件正文', '附件'] sheet.append(heading)  password = keyring.get_password('88mail', 'test@88.com')  with Imbox('imap.88.com', 'test@88.com', password, ssl=True) as imbox:      all_inbox_messages = imbox.messages()      for uid, message in all_inbox_messages:         title = message.subject           if '奖金' in title: # 判断标题是否含指定内容             name = message.sent_from[0]['name']             email = message.sent_from[0]['email']              GMT_FORMAT = '%a, %d %b %Y %H:%M:%S +0800 (GMT+08:00)'             email_datetime = str(datetime.datetime.strptime(message.date, GMT_FORMAT))             email_date = email_datetime.strip()[0]             email_time = email_datetime.strip()[1]             text = message.body['plain']             attachment_lst = []             attachments = ''             if message.attachments:                 for attachment in message.attachments:                     attachment_lst.append(attachment['filename'])                 attachments = ', '.join(attachment_lst)             sheet.append([title, name, email, email_date, email_time, text, attachments])             imbox.mark_flag(uid) # 在此处标记符合要求的邮件               workbook.save('xxxxx.xlsx')

到此,相信大家对“怎么用Python自动化管理邮件”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么用Python自动化管理邮件

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

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

猜你喜欢
  • 怎么用Python自动化管理邮件
    本篇内容主要讲解“怎么用Python自动化管理邮件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python自动化管理邮件”吧!如果你来不及看,至少需要了解下面几个概念为了体现通用性,这次...
    99+
    2023-06-15
  • 怎么用Python自动化管理Exchange邮箱
    本篇内容主要讲解“怎么用Python自动化管理Exchange邮箱”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python自动化管理Exchange邮箱”吧!Python是一种解释型、交...
    99+
    2023-06-15
  • Java Mail电子邮件自动处理:实现电子邮件自动化管理
    Java Mail电子邮件自动处理概述 Java Mail电子邮件自动处理是一个强大且灵活的框架,可用于处理和管理电子邮件。它提供了对电子邮件协议(如SMTP、POP3和IMAP)的访问,以及丰富的功能,例如电子邮件解析、附件处理和错误...
    99+
    2024-02-05
    Java Mail 电子邮件自动化 SMTP POP3 IMAP
  • Python中怎么自动化读取邮件
    这篇文章将为大家详细讲解有关Python中怎么自动化读取邮件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、poplib库poplib 模块提供了 poplib.POP3 和 poplib...
    99+
    2023-06-15
  • Python怎么实现自动化发送邮件
    这期内容当中小编将会给大家带来有关Python怎么实现自动化发送邮件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚...
    99+
    2023-06-26
  • 怎么用Python自动群发邮件
    这篇文章主要讲解了“怎么用Python自动群发邮件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python自动群发邮件”吧!如何把收件人名字一一对应前提条件,我的解释器是 IDLE ...
    99+
    2023-06-16
  • Python实现自动化发送邮件
    目录开门见山自动化发送邮件SMTP 介绍开启SMTP服务邮件的属性配置发送文本邮件发送HTML邮件发送附件邮件后记总结开门见山 自动化测试过程中,一般测试结果都会以邮件的形式发送给相...
    99+
    2024-04-02
  • Python中怎么实现电子邮件的自动化
    这期内容当中小编将会给大家带来有关Python中怎么实现电子邮件的自动化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。用Python下载文件对于第一步,我们将需要使用HTTP请求实际下载数据文件。在本例中...
    99+
    2023-06-16
  • Python 文件操作:自动化文件管理任务
    ...
    99+
    2024-04-02
  • python怎么实现自动化办公邮件合并功能
    本篇内容主要讲解“python怎么实现自动化办公邮件合并功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python怎么实现自动化办公邮件合并功能”吧!经常使用word办公的小伙伴们经常会遇到...
    99+
    2023-06-20
  • 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自动化之文件自动化处理
    一、生成随机的测验试卷文件 假如你是一位地理老师, 班上有 35 名学生, 你希望进行美国各州首府的一个小测验。不妙的是,班里有几个坏蛋, 你无法确信学生不会作弊。你希望随机调整问...
    99+
    2024-04-02
  • Python自动发邮件脚本
    缘起 这段时间给朋友搞了个群发邮件的脚本,为了防止进入垃圾邮件,做了很多工作,刚搞完,垃圾邮件进入率50%,觉得还不错,如果要将垃圾邮件的进入率再调低,估计就要花钱买主机了,想想也就算了,先发一个月,看看效...
    99+
    2022-06-04
    发邮件 脚本 Python
  • 怎么用Ansible自动化管理Ubuntu服务器
    使用Ansible自动化管理Ubuntu服务器的步骤如下: 安装Ansible:在控制节点上安装Ansible,并确保能够连接到...
    99+
    2024-04-28
    Ubuntu Ansible
  • 从手动操作到自动化管理:CMS 与电子邮件的无缝集成
    内容管理系统 (CMS) 和电子邮件平台是两个强大的工具,可以帮助您管理您的网站内容和电子邮件营销。通过将它们集成在一起,您可以创建一个无缝的系统,可以自动执行许多任务,从而节省您的时间和精力。 演示代码集成 为了将演示代码集成到您的 ...
    99+
    2024-02-09
    CMS 电子邮件 集成 自动化 营销
  • Python中怎么实现自动化处理文件
    Python中怎么实现自动化处理文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。遍历一个目录中的文件如果有如下多个数据需要读取和处理:├── data ...
    99+
    2023-06-15
  • python实现自动化办公邮件合并功能
    经常使用word办公的小伙伴们经常会遇到邮件合并的任务,通常会将数量有限的表格中的信息通过word的邮件合并功能,自动生成word文档,操作熟练的技术员通常不到十分钟就可以合并几十份邮件。那么如果遇到成千上万份的邮件...
    99+
    2022-06-02
    python邮件合并 python 自动化办公
  • Python实现自动化邮件发送过程详解
    使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,可以节省非常多的时间。 操作前配置(以较为复杂的QQ邮箱举例,其他邮箱操作类似) 单击设置-账号,滑倒下方协议处,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作