【发布时间】:2021-01-07 10:15:55
【问题描述】:
我用 win32com 和 python3.x 创建了一个小代码,它简单地通过一个 Outlook 文件夹并对里面的消息进行处理(移动它们、阅读它们等)。
除了一个奇怪的小问题外,它完美无瑕……文件夹中只有 50% 的项目正在处理中!收件箱中有 500 件物品?分析了 250 个。 30? 15 留在收件箱中。 1?处理没有问题。
如果我使用“messages.Count”,我可以看到邮箱中有多少电子邮件 - 这个数字与我在 Outlook 中看到的相符。无论如何,当看到一半的项目时,程序就结束了。程序将倒计时 30、29、28... 在 15 处停止而不会抛出任何错误。
如果我稍微玩一下循环,执行while messages:,程序将倒计时到 15,然后给我一个“NoneType”异常,向我表明 Outlook 不再“给”python 任何消息尽管邮箱里有一些。
在这两种情况下再次运行程序将只处理剩余 50% 的消息。
知道这里发生了什么吗?这是前景吗?我什至不知道从哪里开始......这是代码的超级剥离版本。即使在这个级别,该错误仍然存在。 50% 的收件箱被移动,50% 仍然存在。在剩余的 50% 中,有一半在下次执行时处理。
import win32com.client
outlook = win32com.client.Dispatch("Outlook.Application")
namespace = outlook.GetNamespace("MAPI")
root_folder = namespace.Folders.Item(1) #choose account
subfolder = root_folder.Folders['Inbox'] #choose folder, subfolder
subfolderO = root_folder.Folders['Inbox'].Folders['Closed'] #choose folder, subfolder
messages = subfolder.Items
message = messages.GetFirst()
for message in messages:
print("\n", message.Sender,"\n", message.To, "\n ", message.Subject',"\n", message.CreationTime, "\n_________")
message.Move(subfolderO)
message = messages.GetNext()
【问题讨论】:
标签: python python-3.x outlook automation win32com