【问题标题】:How to reference server inbox instead of offline inbox?如何引用服务器收件箱而不是离线收件箱?
【发布时间】:2019-09-24 06:08:04
【问题描述】:

我想遍历我的整个 Outlook 收件箱,包括存储在 MS Exchange Server 上的邮件。但是,当我通过以下方式引用我的 Outlook 收件箱时:

NameSpace.GetDefaultFolder(olFolderInbox)

它只返回我离线收件箱中的项目。有人知道如何返回整个服务器存档吗?

感谢您的帮助。

【问题讨论】:

    标签: vba server outlook inbox


    【解决方案1】:

    您需要在您的 ThisOutlookSession (vba) 中添加一些内容,然后才能执行您想要执行的操作。

    请参考以下网站。有很多关于连接到共享文件夹(交换)和日历的解释。

    https://www.slipstick.com/developer/working-vba-nondefault-outlook-folders/

    【讨论】:

    • 我已经尝试过那个宏,但我认为它不会有帮助。下面的代码仅适用于索引“1”,它返回我的个人电子邮件地址。因此,该功能可以返回给我的唯一文件夹是我的收件箱、已发送邮件、已删除邮件等的父文件夹(可能相当于我的个人资料或帐户?)
    • MsgBox Session.Folders.Item( [Index as Integer] ) 只接受索引为 1,并返回我的电子邮件地址。 MsgBox Session.Folders.Item(1).Folders("Inbox") 返回我的收件箱。
    • 使用“GetSharedDefaultFolder”而不是“GetDefaultFolder”也不起作用,因为两种方法返回的文件夹都返回相同的Folder.Items.Count,这是我离线收件箱中MailItems的数量,但不是我的 Exchange 收件箱
    【解决方案2】:

    您需要在在线模式下打开该文件夹。你可以

    1) 关闭缓存模式(当然从性能来看并不理想)

    2) 使用扩展 MAPI(仅限 C++ 或 Delphi)使用 IMAPISession::OpenEntryMAPI_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
    

    【讨论】:

      猜你喜欢
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多