Поделиться через


Объект Conversation (Outlook)

Представляет беседу, которая содержит один или несколько элементов, хранящихся в одной или нескольких папках и хранилищах.

Замечания

Объект Conversation является абстрактным агрегированным объектом. Хотя беседа может содержать элементы разных типов, объект Conversation не соответствует конкретному базовому объекту MAPI IMessage .

Беседа представляет один или несколько элементов в одной или нескольких папках и хранилищах. При перемещении элемента беседы в папку "Удаленные" и последующем перечислении диалога с помощью методов GetChildren, GetRootItems или GetTable элемент не будет включен в возвращаемый объект.

Чтобы получить объект Conversation для существующей беседы, используйте метод GetConversation элемента.

Существуют действия, которые можно применить к элементам диалога, вызвав метод SetAlwaysAssignCategories, SetAlwaysDelete или SetAlwaysMoveToFolder . Каждое из этих действий автоматически применяется ко всем элементам диалога при вызове метода ; действие также применяется к будущим элементам беседы, если действие по-прежнему применимо к беседе. В объекте Conversation нет явного метода сохранения.

Кроме того, при применении действия к элементам беседы возникает соответствующее событие. Например, событие ItemChange объекта Items возникает при вызове SetAlwaysAssignCategories, а событие BeforeItemMove объекта Folder возникает при вызове SetAlwaysMoveToFolder.

Пример

Следующий пример управляемого кода написан на C#. Для запуска примера управляемого кода для .NET Framework, который вызывает модель COM, необходимо использовать сборку взаимодействия, которая определяет и сопоставляет управляемые интерфейсы с объектами COM в библиотеке типов объектной модели. Для Outlook можно использовать Visual Studio и первичную сборку взаимодействия Outlook (PIA). Перед запуском примеров управляемого кода для Outlook 2013 убедитесь, что вы установили Outlook 2013 PIA и добавили ссылку на компонент Microsoft Outlook 15.0 Object Library в Visual Studio. В классе надстройки ThisAddIn Outlook следует использовать следующий код (с помощью средств разработчика Office для Visual Studio). Объект Application в коде должен быть доверенным объектом Application Outlook, предоставленным объектом ThisAddIn.Globals. Дополнительные сведения об использовании Outlook PIA для разработки управляемых решений Outlook см. в статье Справочник по основной сборке взаимодействия Outlook на веб-сайте MSDN.

В следующем примере кода предполагается, что выбранный элемент в окне обозревателя является почтовым элементом. Пример кода получает беседу, с которым связан выбранный почтовый элемент, и перечисляет каждый элемент в этой беседе, отображая тему элемента. Метод DemoConversation вызывает метод GetConversation выбранного почтового элемента для получения связанного объекта Conversation . DemoConversation затем вызывает методы GetTable и GetRootItems объекта Conversation , чтобы получить объект Table и коллекцию SimpleItems соответственно. DemoConversation вызывает повторяющийся метод EnumerateConversation для перечисления и отображения темы каждого элемента в этой беседе.

void DemoConversation() 
{ 
 object selectedItem = 
 Application.ActiveExplorer().Selection[1]; 
 // This example uses only 
 // MailItem. Other item types such as 
 // MeetingItem and PostItem can participate 
 // in the conversation. 
 if (selectedItem is Outlook.MailItem) 
 { 
 // Cast selectedItem to MailItem. 
 Outlook.MailItem mailItem = 
 selectedItem as Outlook.MailItem; 
 // Determine the store of the mail item. 
 Outlook.Folder folder = mailItem.Parent 
 as Outlook.Folder; 
 Outlook.Store store = folder.Store; 
 if (store.IsConversationEnabled == true) 
 { 
 // Obtain a Conversation object. 
 Outlook.Conversation conv = 
 mailItem.GetConversation(); 
 // Check for null Conversation. 
 if (conv != null) 
 { 
 // Obtain Table that contains rows 
 // for each item in the conversation. 
 Outlook.Table table = conv.GetTable(); 
 Debug.WriteLine("Conversation Items Count: " + 
 table.GetRowCount().ToString()); 
 Debug.WriteLine("Conversation Items from Table:"); 
 while (!table.EndOfTable) 
 { 
 Outlook.Row nextRow = table.GetNextRow(); 
 Debug.WriteLine(nextRow["Subject"] 
 + " Modified: " 
 + nextRow["LastModificationTime"]); 
 } 
 Debug.WriteLine("Conversation Items from Root:"); 
 // Obtain root items and enumerate the conversation. 
 Outlook.SimpleItems simpleItems 
 = conv.GetRootItems(); 
 foreach (object item in simpleItems) 
 { 
 // In this example, only enumerate MailItem type. 
 // Other types such as PostItem or MeetingItem 
 // can appear in the conversation. 
 if (item is Outlook.MailItem) 
 { 
 Outlook.MailItem mail = item 
 as Outlook.MailItem; 
 Outlook.Folder inFolder = 
 mail.Parent as Outlook.Folder; 
 string msg = mail.Subject 
 + " in folder " + inFolder.Name; 
 Debug.WriteLine(msg); 
 } 
 // Call EnumerateConversation 
 // to access child nodes of root items. 
 EnumerateConversation(item, conv); 
 } 
 } 
 } 
 } 
} 
 
 
void EnumerateConversation(object item, 
 Outlook.Conversation conversation) 
{ 
 Outlook.SimpleItems items = 
 conversation.GetChildren(item); 
 if (items.Count > 0) 
 { 
 foreach (object myItem in items) 
 { 
 // In this example, only enumerate MailItem type. 
 // Other types such as PostItem or MeetingItem 
 // can appear in the conversation. 
 if (myItem is Outlook.MailItem) 
 { 
 Outlook.MailItem mailItem = 
 myItem as Outlook.MailItem; 
 Outlook.Folder inFolder = 
 mailItem.Parent as Outlook.Folder; 
 string msg = mailItem.Subject 
 + " in folder " + inFolder.Name; 
 Debug.WriteLine(msg); 
 } 
 // Continue recursion. 
 EnumerateConversation(myItem, conversation); 
 } 
 } 
} 
 

Методы

Имя
ClearAlwaysAssignCategories
GetAlwaysAssignCategories
GetAlwaysDelete
GetAlwaysMoveToFolder
GetChildren
GetParent
GetRootItems
GetTable
MarkAsRead
MarkAsUnread
SetAlwaysAssignCategories
SetAlwaysDelete
SetAlwaysMoveToFolder
StopAlwaysDelete
StopAlwaysMoveToFolder

Свойства

Имя
Application
Class
ConversationID
Parent
Session

См. также

Элементы объектадиалога ссылок на объектную модель Outlook

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.