C#Outlook移动到文件夹后获取电子邮件的唯一键

时间:2017-08-29 15:56:07

标签: c# email outlook

我有一个应用程序需要移动电子邮件,然后对其进行分类等。但是,我需要能够存储一个唯一的密钥,以便能够在进程处理时返回该项目完成,以便我可以取消分类并取消标记。

我以为我发现了一些我可以使用的东西(Namespace.CompareEntryIDs),但这似乎并不起作用。我猜Outlook在移动时会创建一个全新的项目。我发现移动后ConversationIndex似乎保持不变。那可靠吗?

要记住的一件事是,这将在群组收件箱中使用,因此我遇到的另一个问题是Is the ConversationIndex the same for many clients or does it change based on session?

更糟糕的情况是,我想我可以使用与creation date匹配的senders email address,对吗?

我是Outlook集成的新手,所以如果我留下任何需要的细节,请告诉我,我会添加它们!

P.S。使用Microsoft.Office.Interop.Outlook版本15 dll

1 个答案:

答案 0 :(得分:1)

这个怎么样......

注意:您需要保存新ID

项目有一个唯一的密钥,你是正确的,因为它移动了独特的变化,主要是由于你已经说过的。

这意味着如果你移动它,你只需要重新保存唯一键。

此助手使用新项目更新项目,因此当您完成移动时,您可以查找旧项目并使用新项目进行更新。

在移动之前将旧密钥保存在可行的ID中,这样你仍然拥有它,移动它然后用新的更新旧记录。

//note... when items are moved they receive a new ews identifier
    //when this is called, the caller should make a request to update the message id
    internal void MoveMessageToFolderInDirectory(ref Item item, FolderId folderId, string displayFolderName)
    {
        var folder = CheckFolderExistsInfolder(folderId, displayFolderName);
        var newItem = item.Move(folder);
        item = newItem;
    }