我的目标是搜索整个Outlook电子邮件框,以便找到/提取具有特定主题的电子邮件。
我的代码如下:import win32com.client
import os
import re
path = 'C:/working path'
os.chdir(path)
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
user = outlook.Application.Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress
inbox = outlook.Folders[user].Folders["Inbox"]
for i in inbox.Folders:
subfolders = i.Items
print(i.name)
for message in subfolders:
if message.subject.startswith('Report on X'):
print(message.subject)
title = str(message.subject)
message.SaveAs(os.getcwd() + '//' + title + '.msg')
else:
print('skipped')
我的问题是我的邮件在不同的文件夹级别。换句话说,我有文件夹,子文件夹,子文件夹,…等等。
使用上面的代码,我只能访问文件夹"收件箱"只有它的子文件夹。因此,如果我要搜索的电子邮件在子文件夹中,我找不到它。
有没有一种方法可以在不指定文件夹、子文件夹等名称的情况下搜索整个Outlook电子邮件框?
我建议您看一下. folders字段。现在你只能访问"收件箱"值,但我假设它可以访问所有其他文件夹。例如:
print(inbox = outlook.Folders[user].Folders)
如果这显示了一个包含所有文件夹的数组,那么你可以简单地遍历数组中的每个文件夹。
for i in outlook.Folders[user].Folders.Folders:
subfolders = i.Items
print(i.name)
for message in subfolders:
if message.subject.startswith('Report on X'):
print(message.subject)
title = str(message.subject)
message.SaveAs(os.getcwd() + '//' + title + '.msg')
else:
print('skipped')