C# 如何判断Outlook.MailItem/Outlook.Conversation是否被忽略?

C# 如何判断Outlook.MailItem/Outlook.Conversation是否被忽略?,c#,outlook-addin,C#,Outlook Addin,从邮件中我可以得到对话 var conv = mailItem.GetConversation(); if( conv != null ) { // } 但用户可以选择“忽略”对话 如何判断某个对话是否已被忽略?属性将项目与对话关联。这些项和对话在其ConversationID属性中都具有相同的值。因此,如果没有具有相同对话ID的项目,则用户选择忽略现有对话,或者该对话中没有其他项目。尝试使用任何低级属性浏览器(如MFCMAPI),查看当用户选择忽略对话时,哪些属性发生了更改。此外,您可

从邮件中我可以得到对话

var conv = mailItem.GetConversation();
if( conv != null )
{
   //
}
但用户可以选择“忽略”对话


如何判断某个对话是否已被忽略?

属性将项目与对话关联。这些项和对话在其ConversationID属性中都具有相同的值。因此,如果没有具有相同对话ID的项目,则用户选择忽略现有对话,或者该对话中没有其他项目。尝试使用任何低级属性浏览器(如MFCMAPI),查看当用户选择忽略对话时,哪些属性发生了更改。此外,您可以考虑处理Outlook项目的属性更改事件来跟踪属性更改。

忽略的会话存储在名为“会话动作设置”的隐藏文件夹中。它与收件箱处于同一级别,但隐藏:

Outlook.MAPIFolder csFolder = Application.Session.GetDefaultFolder(olFolderInbox).Parent.Folders["Conversation Action Settings"];
这些项目存储在关联的内容表中。您可以在中看到数据-单击IMsgStore按钮,打开根容器,转到GetHierarchyTable选项卡,双击IPM_子树文件夹,再次转到GetHierarchyTable选项卡,双击对话操作设置文件夹,转到关联的内容选项卡

访问Outlook对象模型中关联邮件的唯一方法是通过MAPIFolder.GetStorage。它不允许您访问所有隐藏项或搜索特定项-您只能通过消息类进行访问,该类将是IPM.ConversationAction,用于所有对话项、主题或条目id。您当然可以通过主题进行访问,但它不是唯一的-您可以与同一主题进行多个对话,但其中一个被忽略,还有一个不是

如果使用是一个选项,它将关联的邮件视为可通过.HiddenItems访问的常规项目,因此您可以搜索RDOFolder.HiddenItems.Find/FindNext/Restrict或RDOFolder.HiddenItems.MAPITable.ExecSQL。它还允许搜索二进制属性,如PR_CONVERSATION_INDEX,Outlook使用它查找对话