nic*_*ico 8 python outlook win32com
我有以下代码,它获取我的共享文件夹的收件箱,以及里面的所有电子邮件.此代码效果很好,将打印上一封电子邮件的主题.
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)
Run Code Online (Sandbox Code Playgroud)
我可以访问foo@bar.com邮箱中的其他父文件夹(如已发送),但是我无法获取收件箱中文件夹的任何子文件夹,或者更深入.所以,如果我想要inbox\subfolder1,我该如何访问?如果重要,请使用Outlook 2013.我的主要目标是:
message.Move(inbox\subfolder1)
Run Code Online (Sandbox Code Playgroud)
Sir*_*sla 13
是的,最好把它写成文件夹的名称,而不是写文件夹编号
像我的文件夹层次结构是:Outlook_Mails>收件箱>重要
outlook = win32.com.client.Dispatch("Outlook.Application")
mapi = outlook.GetNamespace("MAPI")
your_folder = mapi.Folders['Outlook_Mails'].Folders['Inbox'].Folders['Important']
for message in your_folder.Items:
print(message.Subject)
Run Code Online (Sandbox Code Playgroud)
这是我用来执行类似任务的代码.
outlook = win32com.client.Dispatch("Outlook.Application")
namespace = outlook.GetNamespace("MAPI")
root_folder = namespace.Folders.Item(1)
subfolder = root_folder.Folders['All'].Folders['Main Folder'].Folders['Subfolder']
messages = subfolder.Items
Run Code Online (Sandbox Code Playgroud)
这将在"All/Main Folder/Subfolder"文件夹中找到消息.
无法执行此操作 - Outlook 缓存主 OST 文件中的共享默认文件夹 不缓存子文件夹。如果有问题的邮箱被添加为委托存储,您应该能够使用Namespace.Folders或解析到有问题的文件夹Namespace.Stores解析到有问题的文件夹。
否则,您可以使用Redemption(我是它的作者)及其RDOSession。GetSharedDefaultFolder- 该文件夹及其所有子文件夹将在在线模式下打开 ( RDOFolder . Folders)。