使用 EntryID、StoreID 和/或 PR_ENTRYID 打开 Outlook 邮件项目
Posted
技术标签:
【中文标题】使用 EntryID、StoreID 和/或 PR_ENTRYID 打开 Outlook 邮件项目【英文标题】:Open Outlook mail Item using EntryID, StoreID, and / or PR_ENTRYID 【发布时间】: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 设计的。
您能提供的任何帮助将不胜感激。
【问题讨论】:
【参考方案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 类型。
【讨论】:
以上是关于使用 EntryID、StoreID 和/或 PR_ENTRYID 打开 Outlook 邮件项目的主要内容,如果未能解决你的问题,请参考以下文章
Outlook.MailItem.EntryID 和 Mapi32.dll MessageID 之间的区别
查找StoreID中出现次数最多的pairs并且每个STOREID都只有这个pair SQL