Python只从对话中获取最新的Outlook电子邮件

时间:2018-05-19 16:02:18

标签: python outlook

我使用Python 3.5并通过邮件主题搜索Outlook电子邮件,如果满足条件我将邮件保存到桌面。我有一个问题,因为当我遍历邮件时,我最终会在对话中收到所有邮件(原始邮件和所有回复RE :)当我打印符合if条件的主题时。

另一方面,当我将它们保存到桌面(message.SaveAs)时,我只收到对话中的第一封电子邮件。

我感兴趣的只是来自对话的最新邮件,因为如果我将其保存到桌面,我也会获得之前的所有回复,因此不需要30 .msg文件。有办法吗?这是我的代码:

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
folder = outlook.Folders("Main")
subfolder = folder.Folders("Incoming")
inbox = subfolder.Folders("folder1")

for x in IDX:

    messages = inbox.Items
    message = messages.GetFirst()

    for _ in itertools.repeat(None, 100):
        try:
            Subject = message.subject
            if x in Subject:
                print(Subject)
                message.SaveAs(desktop + '\\' + Subject + ".msg", OlSaveAsType['olMSG'])

             message = messages.GetNext()

         except:
             message = messages.GetNext()

1 个答案:

答案 0 :(得分:2)

首先,不要遍历文件夹中的所有项目 - 调用Items.Restrict()传递" [Subject] = 'you subject' "之类的限制,然后在Items.Sort上对返回的Items集合(ReceivedTime)进行排序