如何使用 Python 从 Outlook 中抓取特定内容

问题描述 投票:0回答:1

我正在构建新的业务流程,我将在其中检索所有主题为“每日摘要”和“交易想法”内容的 Outlook 电子邮件。到目前为止,我只能提取电子邮件的正文。但是,理想情况下,我想捕获“交易想法”内容并将其与电子邮件的基本数据(即发件人姓名和电子邮件日期)一起存储到 Excel 文件中。

“交易想法”段落位于邮件末尾,但后面有基本的邮件签名,我怎么可能只检索到“交易想法”段落?

这是我到目前为止的代码,仅打印电子邮件正文:

import win32com.client
import os
outlook=win32com.client.Dispatch("Outlook.Application").GetNameSpace("MAPI")

inbox=outlook.GetDefaultFolder(6) 

message=inbox.Items
message2=message.GetLast()
subject=message2.Subject
body=message2.body
date=message2.senton.date()
sender=message2.Sender
attachments=message2.Attachments


for m in message:
    if 'Daily Summary' in m.Subject :
        print(m.body)

预期结果

      Date      Sender      Trade Idea
      1-Jul-19  John Doe    Buying ABC stock, selling DEF stock

python email outlook win32com office-automation
1个回答
1
投票

所有主题为“每日摘要”和“交易理念”的 Outlook 电子邮件

要获取符合您条件的项目,您需要使用

Find
类的
FindNext
/
Restrict
Items
方法,请在以下文章中阅读有关它们的更多信息:

此外,您可能会发现 Outlook 应用程序类的 AdvancedSearch 方法很有帮助。在 Outlook 中使用

AdvancedSearch
方法的主要好处是:

  • 搜索是在另一个线程中执行的。您不需要手动运行另一个线程,因为
    AdvancedSearch
    方法会在后台自动运行它。
  • 可以在任何位置(即超出特定文件夹的范围)搜索任何项目类型:邮件、约会、日历、笔记等。
    Restrict
    Find
    /
    FindNext
    方法可应用于特定的
    Items
    集合(请参阅 Outlook 中
    Items
    类的
    Folder
    属性)。
  • 完全支持 DASL 查询(自定义属性也可用于搜索)。您可以在 MSDN 中的Filtering 文章中阅读有关此内容的更多信息。为了提高搜索性能,如果商店启用了即时搜索,则可以使用即时搜索关键字(请参阅
    IsInstantSearchEnabled
    类的
    Store
    属性)。
  • 您可以使用
    Stop
    类的
    Search
    方法随时停止搜索过程。

Outlook 对象模型提供了三种使用项目主体的主要方法:

  1. 身体.
  2. HTMLBody
  3. Word 编辑器。 Inspector 类的 WordEditor 属性返回代表消息正文的 Word 文档的实例。因此,您可以使用 Word 对象模型对消息正文执行任何您需要的操作

请参阅第 17 章:使用项目主体了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.