python提取邮件的附件,以excel为例

这篇具有很好参考价值的文章主要介绍了python提取邮件的附件,以excel为例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

配置邮箱、读取基本的邮件内容请参考:python读取并解析邮箱邮件,读取邮件主题、内容、时间

以excel为例:文章来源地址https://www.toymoban.com/news/detail-689231.html

  1. 获取邮件:
	email_value_config = {
		'imap_server': 'imap.exmail.qq.com', 
		'username': 'xxxx@xxxx.com', 
		'password': 'xxxxx', 
	}
    
    # 连接到邮箱服务器
   	email_server = imaplib.IMAP4_SSL(email_value_config['imap_server']) # 这样就已经链接到目标邮箱了
	email_server.login(email_value_config["username"], email_value_config['password']) # 这里登录
  	email_server.select('INBOX')
  1. 提取数据需要使用:
	part.get_payload(decode=True)
  1. 写入本地文件时,使用:
	file_name = str(email.header.make_header(email.header.decode_header(part.get_filename()))) 
	# 直接解析文件名,文件名会是balabala.xlsx
	
	with open(file_name, "wb") as save_file:
		save_file.write(part.get_payload(decode=True))

示例代码

import imaplib
import email
from loguru import logger


def parse_body(message):
    """解析邮件/信体"""
    for part in message.walk():
        if not part.is_multipart():  # 这里要判断是否是multipart,用来判断附件是一个message列表
            file_name = part.get_filename()  # 附件需要有文件名
            if file_name:
                file_name = str(email.header.make_header(email.header.decode_header(part.get_filename()))) # 直接解析文件名,如果是excel,会在文件名中以.xlsx或.xls为后缀
                if not ((".xls" in file_name) or (".xlsx" in file_name)):  # 根据后缀判断附件是一个excel
                    continue
                logger.debug(f"准备保存文件 {file_name}")
                with open(file_name, "wb") as save_file: # 这里就是写入文件了
                    save_file.write(part.get_payload(decode=True))
                logger.success(f"保存excel完成 {file_name}")


def main():
	email_value_config = {
		'imap_server': 'imap.exmail.qq.com', 
		'username': 'xxxx@xxxx.com', 
		'password': 'xxxxx', 
	}
    
    # 连接到邮箱服务器
   	email_server = imaplib.IMAP4_SSL(email_value_config['imap_server']) # 这样就已经链接到目标邮箱了
	email_server.login(email_value_config["username"], email_value_config['password']) # 这里登录
  	email_server.select('INBOX')
    
    # 选择收件箱
    _typ, _search_data = email_server.search(None, 'ALL')
    
    # 开始解析
    mailidlist = _search_data[0].split()  # 转成标准列表,获得所有邮件的ID
    print(f'一共解析邮件数量:{len(mailidlist)}')
    
    # 解析内容
    for mail_id in mailidlist:
        result, data = email_server.fetch(mail_id, '(RFC822)')  # 通过邮件id获取邮件
        email_info = email.message_from_bytes(data[0][1])  # 邮件内容(未解析)
        parse_body(email_info)

    email_server.close()
    email_server.logout()


if __name__ == '__main__':
    main()

到了这里,关于python提取邮件的附件,以excel为例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 自动化指南(繁琐工作自动化)第二版:十八、发送电子邮件和短信

    原文:https://automatetheboringstuff.com/2e/chapter18/ 检查和回复电子邮件是一项巨大的时间消耗。当然,你不能只写一个程序来帮你处理所有的邮件,因为每封邮件都需要它自己的回应。但是,一旦你知道如何编写可以发送和接收电子邮件的程序,你仍然可以自动完成大量与电子邮件

    2023年04月08日
    浏览(64)
  • Selenium+python怎么搭建自动化测试框架、执行自动化测试用例、生成自动化测试报告、发送测试报告邮件

    本人在网上查找了很多做自动化的教程和实例,偶然的一个机会接触到了selenium,觉得非常好用。后来就在网上查阅各种selenium的教程,但是网上的东西真的是太多了,以至于很多东西参考完后无法系统的学习和应用。 以下整理的只是书中自动化项目的知识内容,介绍怎么搭

    2024年02月05日
    浏览(67)
  • python 邮箱自动化操作(1) 邮件的自动获取 imapclient 非常详细!有范例!!

    python 3.8 imapclient:3.0.0  注意: 这里是以腾讯企业邮箱为例,不同的邮箱可能会有不同的编码格式,就可能会产生错误。 SMTP (Simple Mail Transfer Protocol) : SMTP 是用于发送电子邮件的标准协议。 客户端使用 SMTP 将邮件发送到邮件服务器。 SMTP 客户端连接到 SMTP 服务器的 25 号端口

    2024年04月22日
    浏览(34)
  • Python办公自动化 -- Python发送电子邮件和Outlook的集成

    Python办公⾃动化是利⽤Python编程语⾔来创建脚本和程序,以简化、加速和⾃动化⽇常办公任务和⼯作流程的过程。它基于Python的强⼤功能和丰富的第三⽅库,使得能够处理各种办公任务,如⽂档处理、数据分析、电⼦邮件管理、⽹络通信等等。 要使⽤Python发送电⼦邮件,可以

    2024年02月20日
    浏览(62)
  • 100天精通Python丨办公效率篇 —— 11、Python自动化操作 Email(发送邮件、收邮件、邮箱客户端)

    大家好,我是你们的好朋友西红柿!今天咱们聊一聊关于Python怎么操作邮件的问题。这可是十分有用的技能啊,偏偏很多小伙伴们并不知道,还得费尽周折地查找资料呢。幸好我这个聪明伶俐的小家伙会给你们支招,让你们又快又好地掌握这门技能! 首先,你要掌握以SMTP协

    2023年04月17日
    浏览(46)
  • playwright自动化上传附件

    自动设置上传头像 1. 首先保存本地一个文件,例如 aaa.php 2. 获取输入类型为 \\\"file\\\" 的按钮 3. 将本地保存的图片路径赋值 4. 点击上传按钮

    2024年02月07日
    浏览(45)
  • python 自动化数据提取之正则表达式

     前    言 我们在做接口自动化的时候,处理接口依赖的相关数据时,通常会使用正则表达式来进行提取相关的数据,今天在这边和大家聊聊如何在python中使用正则表达式。 正则表达式 ,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular

    2024年02月14日
    浏览(55)
  • 【苹果】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本

    Iphone15来了,两年之约你还记得吗? 遂整合之前iphone13及iphone14的相关抢购代码,完成一个 SpringBoot监听Iphone15有货邮件提醒+python自动化脚本 小功能。 后端基于 SpringBoot ,通过 苹果官网进行有货接口调用 ,将 JSON结果解析分析 是否有货,并展示近10条有货记录列;可灵活监听

    2024年02月08日
    浏览(52)
  • Python实战之数据表提取和下载自动化

    在网络爬虫领域,动态渲染类型页面的数据提取和下载自动化是一个常见的挑战。本文将介绍如何利用Pyppeteer库完成这一任务,帮助您轻松地提取动态渲染页面中的数据表并实现下载自动化。 一、环境准备 首先,确保您已经安装了Python环境。接下来,我们需要安装 pyppeteer

    2024年02月11日
    浏览(38)
  • 全网最详细的Python自动化测试+邮件推送+企业微信推送+Jenkins

    什么是python自动化?我理解的Python自动化测试就是把以前人为测试转化为机器测试的一种过程。自动化测试是一种比手工测试更快获得故障反馈的方法。 自动化测试是一种质量保障的方式,最重要的还是以做好一款高质量产品为前提。测试工作很多时候就是在不断平衡质量、

    2024年02月03日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包