Méthode MailItem.GetConversation (Outlook)
Obtient un objet Conversation qui représente la conversation à laquelle cet élément appartient.
Syntaxe
expression. GetConversation
Expression Variable qui représente un objet « MailItem ».
Valeur renvoyée
Objet Conversation représentant la conversation à laquelle cet élément appartient.
Remarques
GetConversation renvoie la valeur Null (Nothing dans Visual Basic) s’il n’existe aucune conversation pour cet élément. Il n’existe aucune conversation pour un élément dans les scénarios suivants :
L’élément n’a pas été enregistré. Un élément peut être enregistré par programmation, par une action de l’utilisateur ou par enregistrement automatique.
Un élément qui peut être envoyé (par exemple, un élément de courrier, de rendez-vous ou de contact) n’a pas été envoyé.
Les conversations ont été désactivées via le Registre Windows.
Le magasin ne prend pas en charge le mode Conversation (par exemple, Outlook s’exécute en mode en ligne classique sur une version de Microsoft Exchange antérieure à Microsoft Exchange Server 2010). Utilisez la propriété IsConversationEnabled de l’objet Store pour déterminer si le magasin prend en charge le mode Conversation.
Exemple
Le code managé suivant est écrit dans C#. Pour exécuter un exemple de code managé .NET Framework qui doit appeler un modèle COM (Component Object Model), vous devez utiliser un assembly d’interopérabilité qui définit et mappe des interfaces managées avec des objets COM dans la bibliothèque de types de modèle objet. Pour Outlook, vous pouvez utiliser Visual Studio et l’assembly d’interopérabilité de base (PIA) d’Outlook. Avant d’exécuter des exemples de code managé pour Outlook 2013, assurez-vous que vous avez installé le PIA d’Outlook 2013 et que vous avez ajouté une référence au composant Bibliothèque d’objets Microsoft Outlook 15.0 dans Visual Studio. Vous devez utiliser le code suivant dans la ThisAddIn
classe d’un complément Outlook (à l’aide des Outils de développement Office pour Visual Studio). L'objet Application dans le code doit être un objet Application Outlook approuvé fourni par ThisAddIn.Globals
. Pour plus d’informations sur l’utilisation de l’assembly PIA Outlook pour développer des solutions Outlook managées, consultez bienvenue dans la référence de l’assembly d’interopérabilité principal Outlook sur MSDN.
L’exemple de code suivant part du postulat que l’élément sélectionné dans la fenêtre d’explorateur est un élément de messagerie. L’exemple de code obtient la conversation à laquelle l’élément de courrier sélectionné est associé et énumère chaque élément de cette conversation, en affichant l’objet de l’élément. La DemoConversation
méthode appelle la méthode GetConversation de l’élément de courrier sélectionné pour obtenir l’objet Conversation associé. DemoConversation
appelle ensuite les méthodes GetTable et GetRootItems de l’objet Conversation pour obtenir un objet Table et une collection SimpleItems , respectivement. DemoConversation
appelle la méthode EnumerateConversation
récurrente pour énumérer et afficher l’objet de chaque élément de cette conversation.
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, enumerate only 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, enumerate only 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);
}
}
}
Voir aussi
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.