5

我正在构建一个应用程序来分析 Outlook 电子邮件,存储分析的信息,然后允许用户打开满足特定条件的邮件。

我希望我会从每封电子邮件中提取 Message-ID,将其存储在我的数据库中,然后要求 Outlook 通过稍后提供 Message-ID 来打开邮件。但是,我似乎错过了一些东西。

通过 Outlook 互操作 API,我可以获得一个 EntryID,但据我所知,EntryID 只能保证在给定文件夹(或者可能是给定商店)中是稳定的。如果将邮件移动到不同的文件夹,EntryID 可能会更改。此外,API 要求在通过 EntryID 查找消息时提供 StoreID。同样,如果消息在商店之间移动,则该信息可能是无效的。

我见过很多与 Office 相关的产品,它们似乎在做我上面描述的事情。如何有效地查找 Outlook 可访问的消息,而不考虑商店等?

目前,我的备用计划是为我扫描的每个 Message-ID 存储 EntryID 和 StoreID 信息,然后尝试我为给定 MessageID 记录的所有各种 EntryID / StoreID 组合,直到成功。但这似乎是 Outlook 应该已经知道如何为我完成的工作。

谢谢,

-帕特里克

4

1 回答 1

2

“但这似乎是 Outlook 应该已经知道如何为我完成的工作”

它应该。但事实并非如此。至少,当我使用 API 时,我没有发现任何明显的 API。也许原因很简单:Message-ID 对 Outlook 本身没有意义,因此将其保存为属性从未在产品中实现。

现在,我认为最明显的方法是做你已经在做的事情,即。存储 Message-ID 和 StoreID - EntryID 对之间的关​​联。这将让您快速访问所需的电子邮件,而无需遍历每封已存储邮件的列表。现在,您显然必须检查 Message-ID 是否仍然正确,如果不正确,则遍历每封邮件。

顺便说一句,我不太明白你为什么要为每个 Message-ID 存储几个 StoreID - EntryID 对。我想邮件只会在 Outlook 中存储一次,所以每个 Message-ID 一对就足够了。当这对已过时(邮件移动到另一个文件夹/存储)时,您只需更新它。

CreationTime注意:访问和MailItem.SenderEmailAddress属性不是更容易更快吗?看到两封不同的邮件共享这些属性会很奇怪,因此这是一种唯一标识邮件的方法,而无需手动提取 Message-ID。

于 2010-06-26T01:36:58.773 回答