【问题标题】:win32com - Get latest outlook email from duplicate emails using python 3.7win32com - 使用 python 3.7 从重复的电子邮件中获取最新的 Outlook 电子邮件
【发布时间】:2020-08-11 20:17:10
【问题描述】:

我已使用 win32com 将 Outlook 与 Python 3.7 连接起来。我正在尝试根据主题行和发件人 ID 下载附件并将附件保存到指定位置。我已经能够通过在 python 中读取一个 excel 文件来成功地做到这一点,该 excel 文件由主题行和目标(保​​存附件)组成,以使代码更具动态性,但是我仍然面临一个问题 - 当我有同一天多封同一主题的邮件,由于邮件重复,python无法保存附件。

我已经根据“今天”过滤了我的 Outlook 收件箱项目,但我希望提取最近的电子邮件,我认为这只能在综合考虑的日期时间的基础上完成。

示例 - 主题行是“测试”。我在同一天的不同时间收到了两封带有此主题的电子邮件。如何从这两封电子邮件中的最新电子邮件中下载附件?我的 excel 文件只包含一个“测试”主题行。

任何帮助将不胜感激。

提前致谢!

val_date = datetime.date.today()

    for i in Items:
#        print(i)
        if i.Subject == file['Subject'][j] and i.ReceivedTime.date() == val_date:
          #  print(i, i.ReceivedTime)
            #j = j + 1
  #          print("j:", j)
            for attachment in i.Attachments:
                print(attachment.FileName)

【问题讨论】:

  • 请显示您现有的过滤代码。
  • 我已经编辑了我的问题。希望这对现在有帮助!

标签: python outlook email-attachments win32com


【解决方案1】:

首先,永远不要遍历文件夹中的所有项目 - 这就是 Items.Find/FindNextItems.Restrict 的用途。

其次,切勿将"==" 运算符与日期时间值一起使用:即使您将值匹配到毫秒,也永远不会满足条件。在你的情况下,它只是日期。始终使用范围。

【讨论】:

  • 感谢 Dmitry 的建议!我应该怎么做才能根据最新的日期时间戳选择电子邮件?例如,如果“测试”电子邮件在 1.00PM 和 1.01PM 收到,“第二次测试”在 2PM 收到,我只想选择 1.01PM 的“测试”电子邮件和 2PM 的“第二次测试”电子邮件。在这种情况下,为具有相同主题行(“测试”)的多封电子邮件选择最新电子邮件的逻辑应该是什么!
  • 您可以对项目集合进行排序-Items.Sort
  • 是的,我已经在循环之外对它们进行了排序,但由于主题行相同,它会从两封电子邮件中下载附件,而不仅仅是最新的。无论如何,我会尝试使用其他一些功能,让我们看看!
猜你喜欢
  • 2020-09-28
  • 2017-10-09
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
相关资源
最近更新 更多