Объект 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);
}
}
}
Методы
Свойства
Имя |
---|
Application |
Class |
ConversationID |
Parent |
Session |
См. также
Элементы объектадиалога ссылок на объектную модель Outlook
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.