【发布时间】:2022-01-30 20:03:19
【问题描述】:
我需要通过 win32com 模块从 python 中删除 Outlook 中的多封电子邮件。
我知道有一个 VBA 方法 MailItem.Delete() 通过 COM 可用于 win32com 并且它有效;但是当删除多于一封电子邮件时它非常非常慢,因为一个人必须按顺序删除电子邮件,即循环遍历邮件的 MailItem 集合。
有没有办法一次删除选定的邮件项集合,例如 MailItemCollection.DeleteAll()?
另外,如果上述方法是不可能的;是否有可能通过多线程方法删除许多电子邮件,即将mailItems 的集合划分为4 个子集;有4个线程在上面运行吗?
我认为,由于我可以通过其 GUI 非常快速地删除 Outlook 中的多封电子邮件,因此必须有一种方法可以通过 COM API 执行相同的操作。
【问题讨论】:
-
@TheIncorrigible1,如果可以的话,我会的。我必须使用 python ......而你跑题了......
-
@TheIncorrigible1 - 这里的问题是用于在线或大型文件夹时底层 API 的性能,而不是使用 Python 与任何其他语言的开销
-
@DmitryStreblechenko 使用 Outlook com 对象时,您实际上是在使用已安装的任何 Office 版本并模拟单击操作,因此它与正在使用的任何应用程序一样慢(例如,2013 v 2016)和主机的硬件。您不是直接与 Outlook 服务器交互; Outlook 应用程序是。
-
@TheIncorrigible1 - 绝对不行:Python 可以像 VBS 或 Powershell 等任何其他语言一样访问 Outlook 对象模型,不会模拟任何点击。您可能正在考虑后期绑定与早期绑定,在这种情况下可以忽略不计。
-
@DmitryStreblechenko 我不是指文字点击仿真,但办公室 com 对象基本上就是这样做的。我想不出任何 API 可用的功能,而您无法通过 GUI 访问我的脑袋。
标签: python api outlook com win32com