使用win32com模块通过python分析我的外表时,我遇到了OLE错误。
Traceback (most recent call last):
for i, message in enumerate(messages):
pywintypes.com_error: (-520879857, 'OLE error 0xe0f4010f', None, None)
我认为这是由于网络连接可能在特定时间后重新启动。
inbox= win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI").Folders["Inbox"]
messages = inbox.Items
for i, message in enumerate(messages):
答案 0 :(得分:0)
遍历文件夹中的所有项目并不是一个好主意:
for i, message in enumerate(messages):
相反,我建议获取一部分项目并批量处理。例如,您可以使用Find
/ FindNext
或Restrict
方法来获取项的子集(根据您的条件)并进行处理。在以下文章中了解有关这些方法的更多信息:
How To: Use Find and FindNext methods to retrieve Outlook mail items from a folder (C#, VB.NET)
How To: Use Restrict method to retrieve Outlook mail items from a folder
此外,您可以考虑使用Application类的AdvancedSearch
方法。在Outlook中使用AdvancedSearch
方法的主要好处是:
搜索是在另一个线程中执行的。您不需要手动运行另一个线程,因为AdvancedSearch方法会在后台自动运行它。
可以在任何位置(即超出某个文件夹的范围)搜索任何项目类型:邮件,约会,日历,便笺等。可以将Restrict和Find / FindNext方法应用于特定的Items集合(请参阅Outlook中Folder类的Items属性)。
完全支持DASL查询(自定义属性也可用于搜索)。您可以在MSDN的Filtering文章中了解有关此内容的更多信息。为了提高搜索性能,如果为商店启用了“即时搜索”,则可以使用“即时搜索”关键字(请参阅Store类的IsInstantSearchEnabled属性)。
您可以随时使用Search类的Stop方法停止搜索过程。