我有一个应用程序需要移动电子邮件,然后对其进行分类等。但是,我需要能够存储一个唯一的密钥,以便能够在进程处理时返回该项目完成,以便我可以取消分类并取消标记。
我以为我发现了一些我可以使用的东西(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
答案 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;
}