我使用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()
答案 0 :(得分:2)
首先,不要遍历文件夹中的所有项目 - 调用Items.Restrict()
传递" [Subject] = 'you subject' "
之类的限制,然后在Items.Sort
上对返回的Items集合(ReceivedTime
)进行排序