Outlook Interop,如何跟踪EntryId的变化

时间:2016-04-02 10:06:08

标签: c# outlook office-interop

我有以下情况: 一个小的WPF应用程序(原型,概念证明),它应该以编程方式创建一个电子邮件(填充一些数据),并追踪该电子邮件是否稍后被回复(对话跟踪)。 在发送项目之前,会话ID不可用。

我遇到的问题是,当项目被创建并最初保存时 - 它有一个EntryId,但是当项目被发送时,它被移动到另一个文件夹(如果有多个帐户,发送的文件夹可以是与OlDefaultSent文件夹不同),当它被移动到Exchange帐户的另一个文件夹时,其EntryId会被更改,因此我将丢失它的跟踪。

问题是 - 如何将我创建的项目移动到另一个文件夹(意味着EntryID也被更改)时跟踪?

这里的第二个问题可以是 - 如果我的应用程序在EntryId更改发生时关闭了,我怎样才能找到我的项目?

1 个答案:

答案 0 :(得分:0)

您可以跟踪PR_SEARCH_KEY MAPI属性(DASL名称http://schemas.microsoft.com/mapi/proptag/0x300B0102) - 在文件夹之间移动邮件时,它不会更改。您可以使用MailItem.PropertyAccessor.GetProperty检索该属性,但Outlook对象模型不允许您在二进制属性上搜索(Items.Find),您需要扩展MAPI(C ++或Delphi)或{ {3}}为此。