我有以下代码可以获取共享文件夹的收件箱以及其中的所有电子邮件。此代码效果很好,将打印最后一封电子邮件的主题。
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
recip = outlook.CreateRecipient("foo@bar.com")
inbox = outlook.GetSharedDefaultFolder(recip, 6)
messages = inbox.Items
message = messages.GetLast()
print (message.Subject)
我可以访问 foo@bar.com 邮箱中的其他父文件夹(如已发送),但我无法获取收件箱内或更深文件夹的任何子文件夹。那么,如果我想要 inbox\subfolder1,我该如何访问它?如果重要,请使用 Outlook 2013。我的主要目标是:
message.Move(inbox\subfolder1)
原文由 nico 发布,翻译遵循 CC BY-SA 4.0 许可协议
不能这样做 - Outlook 缓存主 OST 文件中的共享默认文件夹 不缓存子文件夹。如果有问题的邮箱被添加为委托存储,您应该能够使用
Namespace.Folders
或Namespace.Stores
解析到有问题的文件夹。否则你可以使用 Redemption (我是它的作者)和它的 RDOSession 。
GetSharedDefaultFolder
- 该文件夹及其所有子文件夹( RDOFolder .Folders
)将以在线模式打开。