使用 EntryID、StoreID 和/或 PR_ENTRYID 打开 Outlook 邮件项目

发布于 2024-12-04 20:09:43 字数 309 浏览 0 评论 0原文

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

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

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

NOTE: I'm using VBA and Office 2007. (I would use C#, but the project parameters don't allow this)

I'm attempting to find some method in Outlook, or an API, that will allow me to open an Outlook mail item by providing either the Outlook EntryID or the MAPI "PR_ENTRYID" property from an Access Database. I have found many references to said code, but I have never seen anyone actually post a solution. I have attempted in include references to mapi32.dll and OLMAPI32.dll, but I get the following error: "Can't add a reference to the specified file." I'm guessing this is because those dll's are meant for .NET.

Any help you can give would be greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

遥远的绿洲 2024-12-11 20:09:43

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

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

Use Namespace.GetItemFromID. Note the second parameter (store id) is optional. You can omit it if the store in question was already touched by Outlook is in the current session. If not, Outlook will raise the "unknown entry id" exception. If the store entry id is specified, Outlook will open it first, and the store provider will have a chance to register its entry ids with the MAPI system.

set App = CreateObject("Outlook.Application")
set NS = App.GetNamespace("MAPI")
NS.Logon
set Msg = NS.GetItemFromID(EntryID)
MsgBox Msg.Subject
榕城若虚 2024-12-11 20:09:43

对于 C#:

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

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

For C#:

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

Where OutlookApp has Microsoft.Office.Interop.Outlook._Application type.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文