【问题标题】:Open Outlook mail Item using EntryID, StoreID, and / or PR_ENTRYID使用 EntryID、StoreID 和/或 PR_ENTRYID 打开 Outlook 邮件项目
【发布时间】:2011-11-18 06:55:25
【问题描述】:

注意:我使用的是 VBA 和 Office 2007。(我会使用 C#,但项目参数不允许这样做)

我试图在 Outlook 或 API 中找到一些方法,通过提供 Access 数据库中的 Outlook EntryID 或 MAPI“PR_ENTRYID”属性,我可以打开 Outlook 邮件项目。我找到了很多对上述代码的引用,但我从未见过有人真正发布解决方案。我尝试包含对 mapi32.dll 和 OLMAPI32.dll 的引用,但出现以下错误:“无法添加对指定文件的引用。”我猜这是因为这些 dll 是为 .NET 设计的。

您能提供的任何帮助将不胜感激。

【问题讨论】:

    标签: vba outlook exchange-server mapi mailitem


    【解决方案1】:

    使用Namespace.GetItemFromID。注意第二个参数(store id)是可选的。如果当前会话中 Outlook 已触及相关存储,则可以省略它。如果不是,Outlook 将引发“未知条目 id”异常。如果指定了商店入口 id,Outlook 将首先打开它,商店提供者将有机会将其入口 id 注册到 MAPI 系统。

    set App = CreateObject("Outlook.Application")
    set NS = App.GetNamespace("MAPI")
    NS.Logon
    set Msg = NS.GetItemFromID(EntryID)
    MsgBox Msg.Subject
    

    【讨论】:

    • 谢谢德米特里 - 这很管用。我到处寻找这个答案!
    【解决方案2】:

    对于 C#:

    var ns = OutlookApp.GetNamespace("MAPI");
    var item = ns.GetItemFromID(entryId) as MailItem;
    

    其中 OutlookApp 具有 Microsoft.Office.Interop.Outlook._Application 类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 1970-01-01
      • 2023-01-16
      相关资源
      最近更新 更多