ReportItem
とソースの間の唯一のリンクはMailItem
とConversationIndex
のようConversationTopic
です。これは、Outlook が開封確認メッセージと関連するソースをリンクするために使用するものですMailItem
。でフィルタリングしConversationTopic
、最初の 44 文字を使用しConversationIndex
MailItem
て元のソースを特定するだけです。
サンプル会話インデックス
ソース インデックス: 01CDC1C35624E2A7BD18CF8C439CA73B62A052922657
レシート インデックス:01CDC1C35624E2A7BD18CF8C439CA73B62A0529226570000012862
Items.Restrict
アイテムを特定の DASL フィルターに減らすために使用できます
DASL 検索:
[ConversationTopic] = 'read receipt ConversationTopic here'
ReportItem の親 MailItem の検索
Outlook.MailItem source = FindReadReceiptSourceMessage(ri);
string entryID = source.EntryID;
// ...
public static Outlook.MailItem FindReadReceiptSourceMessage(Outlook.ReportItem readReceipt)
{
Outlook.Folder inbox = Globals.ThisAddIn.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox) as Outlook.Folder;
string sourceIndex = readReceipt.ConversationIndex.Substring(0, 44);
string topicFilter = string.Format("[ConversationTopic] = '{0}'", readReceipt.ConversationTopic);
Outlook.Items topicItems = inbox.Items.Restrict(topicFilter);
return topicItems.OfType<Outlook.MailItem>().Where(c=>c.ConversationIndex.Equals(sourceIndex)).FirstOrDefault();
}