为什么 win32com 不显示所有电子邮件

Why win32com doesnt show me all emails

我想通过 Outlook 应用程序解析 python 中的电子邮件。 运行 这个代码我只收到了一些我的电子邮件。

import win32com.client
outlook = win32com.client.Dispatch('outlook.application')
mapi = outlook.GetNamespace("MAPI")  
inbox= mapi.GetDefaultFolder(6)  
messages= inbox.Items  
for i in messages:  
    message=i.subject  
    print(message)

我试过更改默认文件夹,到处都是。 我做错了什么?

您需要记住,Outlook 文件夹中可能包含不同种类的项目。因此,您必须为位于同一文件夹中具有不同属性集的不同项目做好准备。出于这个原因,我建议检查项目类型,然后才尝试获取任何 属性 或调用方法。按照这种方式,您可以处理文件夹中的所有项目。否则,当您调用 non-existing 属性 或方法时,可能会在循环中抛出异常,它会突然结束其工作。

您可以使用 MessageClass 属性 Outlook 项目来检查项目类型。有关详细信息,请参阅 Item Types and Message Classes

尝试获取 Count ,示例

print(messages.Count)

还要检查项目类型,尝试

if i.Class == 43:
        print(i.subject)

电子邮件不可见,因为它们在服务器上!

文件-> 帐户设置-> 帐户设置...-> 双击您的 Exchange 帐户-> 将邮件保持离线滑块设置为:全部。

找到了 here !