【发布时间】:2019-09-24 06:08:04
【问题描述】:
我想遍历我的整个 Outlook 收件箱,包括存储在 MS Exchange Server 上的邮件。但是,当我通过以下方式引用我的 Outlook 收件箱时:
NameSpace.GetDefaultFolder(olFolderInbox)
它只返回我离线收件箱中的项目。有人知道如何返回整个服务器存档吗?
感谢您的帮助。
【问题讨论】:
我想遍历我的整个 Outlook 收件箱,包括存储在 MS Exchange Server 上的邮件。但是,当我通过以下方式引用我的 Outlook 收件箱时:
NameSpace.GetDefaultFolder(olFolderInbox)
它只返回我离线收件箱中的项目。有人知道如何返回整个服务器存档吗?
感谢您的帮助。
【问题讨论】:
您需要在您的 ThisOutlookSession (vba) 中添加一些内容,然后才能执行您想要执行的操作。
请参考以下网站。有很多关于连接到共享文件夹(交换)和日历的解释。
https://www.slipstick.com/developer/working-vba-nondefault-outlook-folders/
【讨论】:
您需要在在线模式下打开该文件夹。你可以
1) 关闭缓存模式(当然从性能来看并不理想)
2) 使用扩展 MAPI(仅限 C++ 或 Delphi)使用 IMAPISession::OpenEntry 和 MAPI_NO_CACHE (0x0200) 标志以在线模式重新打开文件夹。
3) 使用Redemption(任何语言)重新打开该文件夹 - 它在上面公开 (2):
MAPI_NO_CACHE = &H200
MAPI_BEST_ACCESS &H10
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set vFolder = Session.GetFolderFromID(YourOOMFolder.EntryID, , MAPI_NO_CACHE + MAPI_BEST_ACCESS)
MsgBox vFolder.Items.Count
【讨论】: