使用python从邮件中下载附件

2023-11-22

我有多封包含附件的电子邮件。我想下载未读电子邮件的附件并具有特定的主题行。

例如,我收到一封主题为“EXAMPLE”并包含附件的电子邮件。那么会怎样 下面的代码,我尝试过,但它不起作用” 这是一个Python代码

#Subject line can be "EXAMPLE" 
      for subject_line in lst_subject_line:    
             # typ, msgs = conn.search(None,'(UNSEEN SUBJECT "' + subject_line + '")')
             typ, msgs = conn.search(None,'("UNSEEN")')
             msgs = msgs[0].split()
             print(msgs)
             outputdir = "C:/Private/Python/Python/Source/Mail Reader"
             for email_id in msgs:
                    download_attachments_in_email(conn, email_id, outputdir)

谢谢


我能找到的大多数答案都已经过时了。
下面是一个用于从 Gmail 帐户下载附件的 python (>=3.6) 脚本。
确保检查底部的过滤器选项并启用不太安全的应用程序在你的谷歌帐户上。

import os
from imbox import Imbox # pip install imbox
import traceback

# enable less secure apps on your google account
# https://myaccount.google.com/lesssecureapps

host = "imap.gmail.com"
username = "username"
password = 'password'
download_folder = "/path/to/download/folder"

if not os.path.isdir(download_folder):
    os.makedirs(download_folder, exist_ok=True)
    
mail = Imbox(host, username=username, password=password, ssl=True, ssl_context=None, starttls=False)
messages = mail.messages() # defaults to inbox

for (uid, message) in messages:
    mail.mark_seen(uid) # optional, mark message as read

    for idx, attachment in enumerate(message.attachments):
        try:
            att_fn = attachment.get('filename')
            download_path = f"{download_folder}/{att_fn}"
            print(download_path)
            with open(download_path, "wb") as fp:
                fp.write(attachment.get('content').read())
        except:
            print(traceback.print_exc())

mail.logout()


"""
Available Message filters: 

# Gets all messages from the inbox
messages = mail.messages()

# Unread messages
messages = mail.messages(unread=True)

# Flagged messages
messages = mail.messages(flagged=True)

# Un-flagged messages
messages = mail.messages(unflagged=True)

# Messages sent FROM
messages = mail.messages(sent_from='[email protected]')

# Messages sent TO
messages = mail.messages(sent_to='[email protected]')

# Messages received before specific date
messages = mail.messages(date__lt=datetime.date(2018, 7, 31))

# Messages received after specific date
messages = mail.messages(date__gt=datetime.date(2018, 7, 30))

# Messages received on a specific date
messages = mail.messages(date__on=datetime.date(2018, 7, 30))

# Messages whose subjects contain a string
messages = mail.messages(subject='Christmas')

# Messages from a specific folder
messages = mail.messages(folder='Social')
"""

对于自签名证书,请使用:

...
import ssl
    
context = ssl._create_unverified_context()
mail = Imbox(host, username=username, password=password, ssl=True, ssl_context=context, starttls=False)
...

Note:

安全性较低的应用和您的 Google 帐户

为了帮助保护您的帐户安全,从 2022 年 5 月 30 日起,Google 不再 不再支持使用询问您的第三方应用程序或设备 仅使用您的用户名登录您的 Google 帐户,并且 密码。

重要提示:此截止日期不适用于 Google Workspace 或 Google 云身份客户。这些客户的执行日期 稍后将在 Workspace 博客上公布。

SRC


2022 年 8 月 22 日更新:您应该能够创建应用程序密码来解决“不太安全的应用程序”功能消失的问题。 (后者仍然可以在我的企业帐户中使用,但必须为我的消费者帐户创建应用程序密码。)使用 imaplib,我可以使用应用程序密码登录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用python从邮件中下载附件 的相关文章

  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • 将 github 上的包安装到 Spyder 中

    我一直在尝试安装并导入mpl finance来自 github 的包 在我的 Spyder 环境中没有成功 我努力了 pip install e git https github com matplotlib mpl finance git
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 类型错误:只能使用标量值执行操作

    如果您能让我知道如何为所提供的表格绘制一些信息丰富的图表 我将不胜感激here https www iasplus com en resources ifrs topics use of ifrs 例如 我需要一个名为 国内非上市公司 非上
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 协方差矩阵的对角元素不是 1 pandas/numpy

    我有以下数据框 A B 0 1 5 1 2 6 2 3 7 3 4 8 我想计算协方差 a df iloc 0 values b df iloc 1 values 使用 numpy 作为 cov numpy cov a b I get ar
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • Kafka 服务器配置 - 侦听器与广告侦听器

    要让 Kafka 运行 您需要设置一些属性config server properties文件 有两个设置我不明白 有人可以解释listeners 和advertising listeners 属性之间的区别吗 文档说 Listeners
  • 无法从_interpreter_flags导入名称_args_

    当我尝试import multiprocessing在 OS X 10 6 8 上的 Python 2 7 5 中 我收到此错误 Traceback most recent call last File
  • 如何在Magento数据库中启用exception.log和system.log?

    在 Magento 中如何启用exception log and system log在数据库级别 我知道我可以通过管理后端来做到这一点 我不想做 需要改变什么值 我假设dev log active需要设置为1 in core config
  • Www-data 用户访问 /var/www/ 之外的文件/文件夹

    好的 有没有办法让 PHP 用户 www data 访问服务器的其他部分 例如 home username another folder 提前致谢 Will 编辑 我是否只是将 www data 添加到另一个组 或者类似的事情 或者还有其他
  • iOS 6 中已弃用方向

    看起来 avcapturevideopreviewlayer 的方向在 iOS 6 中已被弃用 有人知道新代码吗 这是我当前的 已折旧的 代码 self setPreviewLayer AVCaptureVideoPreviewLayer
  • 临时表 - 允许的最大行值数为 1000

    当尝试将 6000 行插入临时表时 我收到以下消息 INSERT 语句中行值表达式的数量超过 允许的最大行值数为 1000 来源不位于SQL Server CREATE TABLE TMP ISIN Isin nVARCHAR 250 IN
  • Microsoft Web API 帮助页面 - 如何为参数创建注释

    最近 我开始使用新的 Web API 帮助页面功能 该功能最近添加到了 Web API 项目模板中 我注意到一些 附加信息 栏始终为 无 经过一番查看标记后 我发现此信息应该来自属性 td class parameter annotatio
  • 无法在 Jersey 中实现简单的文件上传 - “用资源的 POST 注释,类未被识别为有效的资源方法。不可用”

    无法使用Jersey实现简单的文件上传 应用程序引导时引发缺少依赖项错误 The following errors and warnings have been detected with resource and or provider
  • 修改 Levenshtein Distance 算法以不计算所有距离

    我正在研究模糊搜索实现 作为实现的一部分 我们使用 Apache 的 StringUtils getLevenshteinDistance 目前 我们正在为模糊搜索设定一个特定的最大平均响应时间 经过各种增强和一些分析后 花费最多时间的地方
  • Mapquest 直接图块访问已停止

    截至今天 2016 年 7 月 11 日 MapQuest 已停止直接访问其图块 他们似乎只支持Leaflet iOS和Android SDK 知道如何让 Openlayers 再次与 MapQuest 配合使用吗 还是我们应该考虑其他替代
  • 打字稿错误:@viewChild 未定义

    尝试使用 Ionic Tabs 文档中 tabs ts 中的 select 方法 但似乎当我尝试运行它时 它说 select 未定义 并且当我尝试 console log tabs 时 我发现我的 viewChild 实际上是空 未定义 尝
  • 如何使用 ActionFilterAttribute 记录运行时间?

    我创建了一个操作过滤器 用于测量 Web API v2 中每个操作的运行时间 public class RunningTimeAttribute ActionFilterAttribute private readonly ILogFact
  • 如何在 WPF 中的特定 x,y 屏幕位置绘制矩形?

    在 C WPF 中 我创建了一个矩形 Rectangle myRgbRectangle new Rectangle myRgbRectangle Width 1 myRgbRectangle Height 1 SolidColorBrush
  • 使用按钮水平滚动 div

    如何在DIV上设置左右按钮来水平滚动内容 我不需要显示滚动条 HMTL div a href img src left button jpg a img src thumb 1 jpg img src thumb 2 jpg img src
  • libstdc++.so.6:在 Linux 上找不到版本“GLIBCXX_3.4.26”

    我试图在 rstudio 中加载 Seurat 包并收到此错误 Error package or namespace load failed for Seurat in dyn load file DLLpath DLLpath unabl
  • 从 SQLReader 填充 DataGridView

    我对正在编写的一些代码有点困惑 概要是 我正在从 SQL 数据库读取一些数据 并希望将其显示在表单上的 DataGridView 中 我已经确认有数据从数据库返回 但不确定为什么没有出现 我已经遵循了互联网上的一些教程 但到目前为止还没有奏
  • 如果属性是 Integer,Spring @Value 总是给出错误

    我正在使用 sprin 版本 4 3 8 RELEASE 我也在用 Value从属性文件注入值 如果属性是字符串 没有问题 但如果属性是Integer这是一个问题 我知道有很多关于此的问题 我尝试了所有答案 但问题仍然存在 该物业是 CON
  • Jupyter 笔记本 python 在 Windows 10 上崩溃

    我花了一周的时间寻找并尝试不同的解决方案 但没有成功 我看到其他几个人一年多前也遇到过同样的问题 问题 Windows 10 专业版 15063 674 我正在使用最新的 Anaconda 5 版本和 Python 3 6 2 并且所有包都
  • 与匈牙利表示法相反?

    大多数程序员都知道一种称为 匈牙利表示法 的东西 每个变量都有一个很好的前缀来表示其数据类型 即 bIsExciting false Boolean strName Gonzo String iNumber 10 Integer 虽然这种表
  • 使用python从邮件中下载附件

    我有多封包含附件的电子邮件 我想下载未读电子邮件的附件并具有特定的主题行 例如 我收到一封主题为 EXAMPLE 并包含附件的电子邮件 那么会怎样 下面的代码 我尝试过 但它不起作用 这是一个Python代码 Subject line ca