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

时间:2019-07-15 06:16:09

标签: python email outlook

我正在建立新的业务流程,在该流程中,我将检索电子邮件中主题为“每日摘要”和“交易建议”的所有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

1 个答案:

答案 0 :(得分:0)

  

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

要获取与您的条件相对应的项目,您需要使用Find类的FindNext / RestrictItems方法,请在以下内容中详细了解它们文章:

此外,您可能会发现Outlook Application类的AdvancedSearch方法很有帮助。在Outlook中使用AdvancedSearch方法的主要好处是:

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

Outlook对象模型提供了三种处理项目正文的主要方法:

  1. Body
  2. HTMLBody
  3. Word编辑器。 Inspector类的WordEditor属性返回一个Word Document实例,该实例代表消息正文。因此,您可以使用Word对象模型对邮件正文进行任何所需的操作

有关更多信息,请参见Chapter 17: Working with Item Bodies