Partager via


Utiliser des filtres de recherche avec EWS dans Exchange

Découvrez comment utiliser des filtres de recherche avec l’API managée EWS ou EWS dans Exchange.

Les filtres de recherche sont le principal outil permettant d’exprimer les critères de recherche dans votre API managée EWS ou votre application EWS. Nous vous recommandons d’utiliser des filtres de recherche, par opposition aux chaînes de requête, pour effectuer les opérations suivantes :

  • Effectuez une recherche sur une propriété ou un ensemble de propriétés spécifique.
  • Recherchez à l’aide de plusieurs critères de recherche.

Les filtres de recherche sont votre seule option si vous effectuez l’une des opérations suivantes :

  • Recherche de propriétés personnalisées.
  • Effectuer des recherches de chaînes respectant la casse.
  • Effectuer des recherches de préfixe ou de chaîne de correspondance exacte.
  • Effectuer des recherches de masque de bits.
  • Recherche d’éléments qui ont un jeu de propriétés spécifique, quelle que soit la valeur.
  • Recherche de dossiers.
  • Création de dossiers de recherche.

Déterminer le type de filtre de recherche dont vous avez besoin

Avant de créer un filtre de recherche, déterminez d’abord le type de filtre dont vous avez besoin. Les types de filtres sont implémentés en tant que classes descendantes de la classe SearchFilter dans l’API managée EWS et en tant qu’éléments enfants de l’élément Restriction dans EWS.

Tableau 1. Types de filtres de recherche

Type de filtre Classe d’API managée EWS Élément EWS Description
Contient un filtre
ContainsSubstring
Contains
Le meilleur type de filtre à utiliser pour les comparaisons de chaînes. Il vous permet de contrôler le respect de la casse, s’il faut ignorer les espaces blancs et définir le mode d’autonomie.
Filtre masque de bits
ExcludesBitmask
Excludes
Vous permet de rechercher des propriétés entières en tant que masque de bits et de retourner uniquement les résultats qui ont des bits correspondant au masque de bits spécifié non défini.
Filtre Exists
Exists
Exists
Retourne tous les éléments qui ont la propriété spécifiée présente, quelle que soit la valeur.
Filtre d’égalité
IsEqualTo
IsNotEqualTo
IsEqualTo
IsNotEqualTo
Compare la valeur de la propriété spécifiée à une valeur constante spécifiée ou à la valeur d’une autre propriété et retourne tous les éléments qui ont une valeur égale (dans le cas d’un filtre IsEqualTo ) ou une valeur non égale (dans le cas d’un filtre IsNotEqualTo ).
Filtre de test relationnel
IsGreaterThan
IsGreaterThanOrEqualTo
IsLessThan
IsLessThanOrEqualTo
IsGreaterThan
IsGreaterThanOrEqualTo
IsLessThan
IsLessThanOrEqualTo
Retourne tous les éléments qui ont une valeur pour la propriété spécifiée dans la relation appropriée à une valeur constante spécifiée ou à une autre propriété. Par exemple, un filtre IsGreaterThan retourne tous les éléments dont la valeur est supérieure à la valeur spécifiée dans la propriété spécifiée.
Filtre de négation
Not
Not
Annule le résultat des autres filtres.
Filtre composé
SearchFilterCollection
And
Or
Combine plusieurs filtres, ce qui permet d’obtenir des critères de recherche plus complexes.

Contient un filtre

Un filtre contient est le meilleur choix pour rechercher des propriétés de chaîne. Avec un filtre contains, vous pouvez contrôler les aspects de la correspondance des chaînes, tels que le respect de la casse et la façon dont les espaces blancs sont traités, en définissant le mode de confinement et le mode de comparaison.

Contient un filtre dans l’API managée EWS

Si vous utilisez l’API managée EWS, vous définissez le mode d’autonomie à l’aide de la propriété ContainmentMode de la classe ContainsSubstring , et vous définissez le mode de comparaison à l’aide de la propriété ComparisonMode de la classe ContainsSubstring . L’exemple suivant montre comment créer un filtre de recherche qui recherche dans le champ d’objet des éléments la sous-chaîne « notes de réunion ». Cet exemple ignore la casse, mais n’ignore pas les espaces blancs.

// Find all items with a subject that contain the substring
// "meeting notes", regardless of case.
// Matches include:
//   - meeting notes
//   - Meeting Notes
//   - Here are my meeting notes
SearchFilter.ContainsSubstring subjectFilter = new SearchFilter.ContainsSubstring(ItemSchema.Subject,
    "meeting notes", ContainmentMode.Substring, ComparisonMode.IgnoreCase);

Contient un filtre dans EWS

Dans EWS, vous définissez le mode d’autonomie à l’aide de l’attribut ContainmentMode sur l’élément Contains , et vous définissez le mode de comparaison à l’aide de l’attribut ContainmentComparison sur l’élément Contains . L’exemple suivant montre comment créer un filtre de recherche pour rechercher dans le champ objet des éléments de la sous-chaîne « notes de réunion ». Cet exemple ignore la casse, mais n’ignore pas les espaces blancs.

<t:Contains ContainmentMode="Substring" ContainmentComparison="IgnoreCase">
  <t:FieldURI FieldURI="item:Subject" />
  <t:Constant Value="meeting notes" />
</t:Contains>

Filtre masque de bits

Un filtre de masque de bits vous permet de rechercher des propriétés entières en tant que masque de bits et de retourner des résultats où des bits spécifiques ne sont pas définis dans la valeur de la propriété spécifiée.

Filtre masque de bits dans l’API managée EWS

L’exemple suivant montre comment utiliser l’API managée EWS pour créer un filtre de recherche afin de retourner tous les éléments qui ont une valeur dans la propriété personnalisée ItemIndex (définie dans l’Exemple : Rechercher des éléments à l’aide d’un filtre de recherche et la section API managée EWS de cet article) qui n’ont pas le deuxième bit (10 en binaire) défini.

// Find all items with a value of the custom property that does not
// have the second bit (0010) set.
// Matches include:
//   - Property not set
//   - 1 (0001)
//   - 4 (0100)
//   - 5 (0101)
//   - 8 (1000)
SearchFilter.ExcludesBitmask bit2NotSetFilter = 
    new SearchFilter.ExcludesBitmask(customPropDefinition, 2);

Filtre masque de bits dans EWS

L’exemple suivant montre comment utiliser EWS pour créer un filtre de recherche afin de retourner tous les éléments qui ont une valeur dans la propriété personnalisée ItemIndex (définie dans l’Exemple : Rechercher des éléments à l’aide d’un filtre de recherche et de la section API managée EWS de cet article) qui n’ont pas le deuxième bit (10 en binaire) défini.

<t:Excludes>
  <t:ExtendedFieldURI PropertySetId="aa3df801-4fc7-401f-bbc1-7c93d6498c2e" PropertyName="ItemIndex" PropertyType="Integer" />
  <t:Bitmask Value="2" />
</t:Excludes>

Filtre Exists

Un filtre existe vous permet de rechercher des éléments sur lesquels une propriété spécifique est définie, quelle que soit la valeur.

Filtre Exists dans l’API managée EWS

L’exemple suivant montre comment créer un filtre de recherche pour renvoyer tous les éléments dont la propriété personnalisée ItemIndex est définie.

// Find all items that have the custom property set.
SearchFilter.Exists customPropSetFilter =
    new SearchFilter.Exists(customPropDefinition);

Filtre Exists dans EWS

L’exemple suivant montre comment créer un filtre de recherche pour renvoyer tous les éléments dont la propriété personnalisée ItemIndex est définie.

<t:Exists>
  <t:ExtendedFieldURI PropertySetId="aa3df801-4fc7-401f-bbc1-7c93d6498c2e" PropertyName="ItemIndex" PropertyType="Integer" />
</t:Exists>

Filtre d’égalité

Les filtres d’égalité vous permettent de rechercher tous les éléments qui ont une valeur pour la propriété spécifiée qui est égale à une valeur spécifique ou qui n’est pas égale à une valeur spécifique. La valeur à comparer peut être une valeur constante ou la valeur d’une autre propriété sur chaque élément.

Filtre d’égalité dans l’API managée EWS

L’exemple suivant montre comment utiliser l’API managée EWS pour créer un filtre de recherche afin de retourner tous les éléments qui n’ont pas été lus.

// Find all items that are not marked as read.
SearchFilter.IsEqualTo unreadFilter =
    new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false);

L’exemple suivant montre comment créer un filtre de recherche pour renvoyer tous les éléments dont la valeur dans la propriété ItemIndex n’est pas égale à la taille de l’élément.

// Find all items that are marked as read.
SearchFilter.IsNotEqualTo indexNotEqualToSizeFilter =
    new SearchFilter.IsNotEqualTo(customPropDefinition, ItemSchema.Size);

Filtre d’égalité dans EWS

L’exemple suivant montre comment utiliser EWS pour créer un filtre de recherche afin de retourner tous les éléments qui n’ont pas été lus.

<t:IsEqualTo>
  <t:FieldURI FieldURI="message:IsRead" />
  <t:FieldURIOrConstant>
    <t:Constant Value="false" />
  </t:FieldURIOrConstant>
</t:IsEqualTo>

L’exemple suivant montre comment créer un filtre de recherche pour renvoyer tous les éléments dont la valeur dans la propriété ItemIndex n’est pas égale à la taille de l’élément.

<t:IsNotEqualTo>
  <t:ExtendedFieldURI PropertySetId="aa3df801-4fc7-401f-bbc1-7c93d6498c2e" PropertyName="ItemIndex" PropertyType="Integer" />
  <t:FieldURIOrConstant>
    <t:FieldURI FieldURI="item:Size" />
  </t:FieldURIOrConstant>
</t:IsNotEqualTo>

Filtre de test relationnel

Les filtres de test relationnel vous permettent de rechercher tous les éléments dont la valeur dans la propriété spécifiée est supérieure à (>), supérieure ou égale à (>=), inférieure ou égale à (<) ou inférieure ou égale à (<=) une valeur spécifiée. La valeur à comparer peut être une valeur constante ou la valeur d’une autre propriété sur chaque élément.

Filtre de test relationnel dans l’API managée EWS

L’exemple suivant montre comment utiliser l’API managée EWS pour créer des filtres de recherche afin de renvoyer tous les éléments ayant une valeur dans la propriété ItemIndex qui a la relation spécifiée avec la valeur constante 3.

// Find all items where the custom property value is > 3.
SearchFilter.IsGreaterThan greaterThanFilter =
    new SearchFilter.IsGreaterThan(customPropDefinition, 3);
// Find all items where the custom property value is >= 3.
SearchFilter.IsGreaterThanOrEqualTo greaterThanOrEqualFilter =
    new SearchFilter.IsGreaterThanOrEqualTo(customPropDefinition, ItemSchema.Size);
// Find all items where the custom property value is < 3.
SearchFilter.IsLessThan lessThanFilter =
    new SearchFilter.IsLessThan(customPropDefinition, 3);
// Find all items where the custom property value is <= 3.
SearchFilter.IsLessThanOrEqualTo lessThanOrEqualFilter =
    new SearchFilter.IsLessThanOrEqualTo(customPropDefinition, 3);

Filtre de test relationnel dans EWS

L’exemple suivant montre comment utiliser EWS pour créer un filtre de recherche afin de renvoyer tous les éléments dont la valeur dans la propriété ItemIndex est supérieure à la valeur constante 3.

<t:IsGreaterThan>
  <t:ExtendedFieldURI PropertySetId="aa3df801-4fc7-401f-bbc1-7c93d6498c2e" PropertyName="ItemIndex" PropertyType="Integer" />
  <t:FieldURIOrConstant>
    <t:Constant Value="3" />
  </t:FieldURIOrConstant>
</t:IsGreaterThan>

L’exemple suivant montre comment créer un filtre de recherche pour renvoyer tous les éléments dont la valeur dans la propriété ItemIndex est supérieure ou égale à la valeur constante 3.

<t:IsGreaterThanOrEqualTo>
  <t:ExtendedFieldURI PropertySetId="aa3df801-4fc7-401f-bbc1-7c93d6498c2e" PropertyName="ItemIndex" PropertyType="Integer" />
  <t:FieldURIOrConstant>
    <t:Constant Value="3" />
  </t:FieldURIOrConstant>
</t:IsGreaterThanOrEqualTo>

L’exemple suivant montre comment créer un filtre de recherche pour renvoyer tous les éléments dont la valeur dans la propriété ItemIndex est inférieure à la valeur constante 3.

<t:IsLessThan>
  <t:ExtendedFieldURI PropertySetId="aa3df801-4fc7-401f-bbc1-7c93d6498c2e" PropertyName="ItemIndex" PropertyType="Integer" />
  <t:FieldURIOrConstant>
    <t:Constant Value="3" />
  </t:FieldURIOrConstant>
</t:IsLessThan>

L’exemple suivant montre comment créer un filtre de recherche pour renvoyer tous les éléments dont la valeur dans la propriété ItemIndex est inférieure ou égale à la valeur constante 3.

<t:IsLessThanOrEqualTo>
  <t:ExtendedFieldURI PropertySetId="aa3df801-4fc7-401f-bbc1-7c93d6498c2e" PropertyName="ItemIndex" PropertyType="Integer" />
  <t:FieldURIOrConstant>
    <t:Constant Value="3" />
  </t:FieldURIOrConstant>
</t:IsLessThanOrEqualTo>

Filtre de négation

Un filtre de négation vous permet d’nier un autre filtre et d’obtenir les résultats de recherche opposés. Tandis que d’autres filtres retournent des résultats qui correspondent à des critères spécifiques, un filtre de négation renvoie des résultats qui ne correspondent pas aux critères spécifiés par le filtre auquel il est appliqué.

Négation du filtre dans l’API managée EWS

L’exemple suivant montre comment utiliser l’API managée EWS pour créer un filtre de recherche afin de renvoyer tous les éléments qui n’ont pas la sous-chaîne « notes de réunion » dans l’objet.

SearchFilter.ContainsSubstring subjectFilter = new SearchFilter.ContainsSubstring(ItemSchema.Subject,
    "meeting notes", ContainmentMode.Substring, ComparisonMode.IgnoreCase);
SearchFilter.Not subjectNotFilter =
    new SearchFilter.Not(subjectFilter);

Négation du filtre dans EWS

L’exemple suivant montre comment créer un filtre de recherche pour renvoyer tous les éléments qui n’ont pas la sous-chaîne « notes de réunion » dans l’objet.

<t:Not>
  <t:Contains ContainmentMode="ExactPhrase" ContainmentComparison="IgnoreCase">
    <t:FieldURI FieldURI="item:Subject" />
    <t:Constant Value="meeting notes" />
  </t:Contains>
</t:Not>

Filtre composé

Un filtre composé vous permet de combiner plusieurs filtres pour créer des critères de recherche plus complexes. Vous pouvez combiner des critères à l’aide des opérateurs logiques AND ou OR. De cette façon, vous pouvez effectuer des recherches telles que « tous les messages de Sadie Daniels qui contiennent des notes de réunion » dans l’objet .

Filtre composé dans l’API managée EWS

L’exemple suivant montre comment utiliser l’API managée EWS pour créer un filtre de recherche qui retourne tous les éléments envoyés par Sadie Daniels et qui contiennent des « notes de réunion » dans l’objet.

SearchFilter.ContainsSubstring subjectFilter = new SearchFilter.ContainsSubstring(ItemSchema.Subject,
    "meeting notes", ContainmentMode.Substring, ComparisonMode.IgnoreCase);
EmailAddress manager = new EmailAddress("sadie@contoso.com");
SearchFilter.IsEqualTo fromManagerFilter =
    new SearchFilter.IsEqualTo(EmailMessageSchema.Sender, manager);
SearchFilter.SearchFilterCollection compoundFilter =
    new SearchFilter.SearchFilterCollection(LogicalOperator.And, subjectFilter, fromManagerFilter);

Filtre composé dans EWS

L’exemple suivant montre comment utiliser EWS pour créer un filtre de recherche qui retourne tous les éléments envoyés à partir de Sadie Daniels et qui contiennent des « notes de réunion » dans l’objet.

<t:And>
  <t:Contains ContainmentMode="Substring" ContainmentComparison="IgnoreCase">
    <t:FieldURI FieldURI="item:Subject" />
    <t:Constant Value="meeting notes" />
  </t:Contains>
  <t:IsEqualTo>
    <t:FieldURI FieldURI="message:Sender" />
    <t:FieldURIOrConstant>
      <t:Constant Value="sadie@fourthcoffee.com" />
    </t:FieldURIOrConstant>
  </t:IsEqualTo>
</t:And>

Exemple : Rechercher des éléments à l’aide d’un filtre de recherche et de l’API managée EWS

Les méthodes d’API managée EWS suivantes utilisent des filtres de recherche :

L’exemple suivant utilise la méthode ExchangeService.FindItems ; Toutefois, les mêmes règles et concepts s’appliquent à toutes les méthodes. Dans cet exemple, une méthode appelée SearchWithFilter est définie. Il prend un objet ExchangeService , un objet WellKnownFolderName et un objet SearchFilter comme paramètres. Cet exemple suppose que l’objet ExchangeService a été initialisé avec des valeurs valides dans les propriétés Identifiants et Url. La classe SearchFilter est la classe de base pour tous les différents filtres de recherche.

using Microsoft.Exchange.WebServices.Data
private static Guid SearchTestGUID = new Guid("{AA3DF801-4FC7-401F-BBC1-7C93D6498C2E}");
private static ExtendedPropertyDefinition customPropDefinition =
        new ExtendedPropertyDefinition(SearchTestGUID, "ItemIndex", MapiPropertyType.Integer);
static void SearchWithFilter(ExchangeService service, WellKnownFolderName folder, SearchFilter filter)
{
    // Limit the result set to 10 items.
    ItemView view = new ItemView(10);
    view.PropertySet = new PropertySet(ItemSchema.Subject, 
                                       ItemSchema.DateTimeReceived,
                                       EmailMessageSchema.IsRead,
                                       customPropDefinition);
    // Item searches do not support Deep traversal.
    view.Traversal = ItemTraversal.Shallow;
    // Sorting.
    view.OrderBy.Add(ItemSchema.DateTimeReceived, SortDirection.Descending);
    try
    {
        FindItemsResults<Item> results = service.FindItems(folder, filter, view);
        foreach (Item item in results.Items)
        {
            Console.WriteLine("Subject: {0}", item.Subject);
            Console.WriteLine("Id: {0}", item.Id.ToString());
            if (item.ExtendedProperties.Count > 0 &&
                 item.ExtendedProperties[0].PropertyDefinition == customPropDefinition)
            {
                Console.WriteLine("Search Index: {0}", item.ExtendedProperties[0].Value);
            }
            if (item is EmailMessage)
            {
                EmailMessage message = item as EmailMessage;
                Console.WriteLine("Read: {0}", message.IsRead.ToString());
            }
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("Exception while enumerating results: {0}", ex.Message);
    }
}

Vous pouvez utiliser cette fonction avec l’un des filtres de recherche indiqués dans les exemples de cet article. Cet exemple utilise un filtre composé pour renvoyer tous les éléments de la boîte de réception de Sadie Daniels avec « notes de réunion » dans l’objet.

SearchFilter.ContainsSubstring subjectFilter = new SearchFilter.ContainsSubstring(ItemSchema.Subject,
    "meeting notes", ContainmentMode.Substring, ComparisonMode.IgnoreCase);
EmailAddress manager = new EmailAddress("sadie@contoso.com");
SearchFilter.IsEqualTo fromManagerFilter =
    new SearchFilter.IsEqualTo(EmailMessageSchema.Sender, manager);
SearchFilter.SearchFilterCollection compoundFilter =
    new SearchFilter.SearchFilterCollection(LogicalOperator.And, subjectFilter, greaterThanFilter);
SearchWithFilter(service, WellKnownFolderName.Inbox, compoundFilter);

Exemple : Rechercher un élément à l’aide d’un filtre de recherche et d’EWS

Les opérations EWS suivantes utilisent des filtres de recherche :

L’exemple suivant utilise l’opération FindItem ; Toutefois, les mêmes règles et concepts s’appliquent aux deux opérations. Les filtres de recherche sont contenus dans l’élément Restriction dans les requêtes SOAP. Cet exemple envoie une requête SOAP équivalente à la recherche affichée dans l’exemple d’API managée EWS précédent.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" 
    xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" 
    xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2013" />
  </soap:Header>
  <soap:Body>
    <m:FindItem Traversal="Shallow">
      <m:ItemShape>
        <t:BaseShape>IdOnly</t:BaseShape>
        <t:AdditionalProperties>
          <t:FieldURI FieldURI="item:Subject" />
          <t:FieldURI FieldURI="item:DateTimeReceived" />
          <t:FieldURI FieldURI="message:IsRead" />
          <t:ExtendedFieldURI PropertySetId="aa3df801-4fc7-401f-bbc1-7c93d6498c2e" PropertyName="ItemIndex" PropertyType="Integer" />
        </t:AdditionalProperties>
      </m:ItemShape>
      <m:IndexedPageItemView MaxEntriesReturned="10" Offset="0" BasePoint="Beginning" />
      <m:Restriction>
        <t:And>
          <t:Contains ContainmentMode="Substring" ContainmentComparison="IgnoreCase">
            <t:FieldURI FieldURI="item:Subject" />
            <t:Constant Value="meeting notes" />
          </t:Contains>
          <t:IsEqualTo>
            <t:FieldURI FieldURI="message:Sender" />
            <t:FieldURIOrConstant>
              <t:Constant Value="sadie@contoso.com" />
            </t:FieldURIOrConstant>
          </t:IsEqualTo>
        </t:And>
      </m:Restriction>
      <m:SortOrder>
        <t:FieldOrder Order="Descending">
          <t:FieldURI FieldURI="item:DateTimeReceived" />
        </t:FieldOrder>
      </m:SortOrder>
      <m:ParentFolderIds>
        <t:DistinguishedFolderId Id="inbox" />
      </m:ParentFolderIds>
    </m:FindItem>
  </soap:Body>
</soap:Envelope>

L’exemple suivant montre la réponse du serveur, y compris les résultats de la recherche.

<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:ServerVersionInfo MajorVersion="15" MinorVersion="0" MajorBuildNumber="712" MinorBuildNumber="22" Version="V2_3" 
        xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" 
        xmlns="http://schemas.microsoft.com/exchange/services/2006/types" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <m:FindItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" 
        xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:FindItemResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:RootFolder IndexedPagingOffset="3" TotalItemsInView="3" IncludesLastItemInRange="true">
            <t:Items>
              <t:Message>
                <t:ItemId Id="AAMkAGM2..." ChangeKey="CQAAABYA..." />
                <t:Subject>meeting notes</t:Subject>
                <t:DateTimeReceived>2013-11-20T21:18:51Z</t:DateTimeReceived>
                <t:ExtendedProperty>
                  <t:ExtendedFieldURI PropertySetId="aa3df801-4fc7-401f-bbc1-7c93d6498c2e" PropertyName="ItemIndex" PropertyType="Integer" />
                  <t:Value>5</t:Value>
                </t:ExtendedProperty>
                <t:IsRead>true</t:IsRead>
              </t:Message>
              <t:Message>
                <t:ItemId Id="AAMkAGM2..." ChangeKey="CQAAABYA..." />
                <t:Subject>Meeting Notes</t:Subject>
                <t:DateTimeReceived>2013-11-20T21:18:51Z</t:DateTimeReceived>
                <t:ExtendedProperty>
                  <t:ExtendedFieldURI PropertySetId="aa3df801-4fc7-401f-bbc1-7c93d6498c2e" PropertyName="ItemIndex" PropertyType="Integer" />
                  <t:Value>6</t:Value>
                </t:ExtendedProperty>
                <t:IsRead>true</t:IsRead>
              </t:Message>
              <t:Message>
                <t:ItemId Id="AAMkAGM2..." ChangeKey="CQAAABYA..." />
                <t:Subject>Meeting notes</t:Subject>
                <t:DateTimeReceived>2013-11-20T21:18:51Z</t:DateTimeReceived>
                <t:ExtendedProperty>
                  <t:ExtendedFieldURI PropertySetId="aa3df801-4fc7-401f-bbc1-7c93d6498c2e" PropertyName="ItemIndex" PropertyType="Integer" />
                  <t:Value>7</t:Value>
                </t:ExtendedProperty>
                <t:IsRead>true</t:IsRead>
              </t:Message>
            </t:Items>
          </m:RootFolder>
        </m:FindItemResponseMessage>
      </m:ResponseMessages>
    </m:FindItemResponse>
  </s:Body>
</s:Envelope>

Étapes suivantes

Maintenant que vous êtes familiarisé avec l’utilisation des filtres de recherche dans les recherches de base, vous pouvez passer à des techniques de recherche plus avancées.

Voir aussi