Compartir a través de


Uso de filtros de búsqueda con EWS en Exchange

Obtenga información sobre cómo usar filtros de búsqueda con la API administrada de EWS o EWS en Exchange.

Los filtros de búsqueda son la herramienta principal para expresar criterios de búsqueda en la API administrada de EWS o la aplicación EWS. Se recomienda usar filtros de búsqueda, en lugar de cadenas de consulta, para hacer lo siguiente:

  • Busque en una propiedad o conjunto de propiedades específicos.
  • Buscar mediante varios criterios de búsqueda.

Los filtros de búsqueda son su única opción si está realizando cualquiera de las siguientes acciones:

  • Buscar propiedades personalizadas.
  • Realización de búsquedas de cadenas que distinguen mayúsculas de minúsculas.
  • Realización de búsquedas de prefijos o cadenas de coincidencia exactas.
  • Realización de búsquedas de máscara de bits.
  • Buscar elementos que tengan una propiedad específica establecida, independientemente del valor.
  • Buscar carpetas.
  • Crear carpetas de búsqueda.

Determinar qué tipo de filtro de búsqueda necesita

Antes de crear un filtro de búsqueda, determine primero qué tipo de filtro necesita. Los tipos de filtro se implementan como clases descendientes de la clase SearchFilter en la API administrada de EWS y como elementos secundarios del elemento Restriction en EWS.

Tabla 1. Tipos de filtros de búsqueda

Tipo de filtro Clase de API administrada de EWS Elemento EWS Descripción
Contiene el filtro
ContainsSubstring
Contains
El mejor tipo de filtro que se va a usar para las comparaciones de cadenas. Permite controlar la distinción entre mayúsculas y minúsculas, si se omite el espacio en blanco y se establece el modo de contención.
Filtro de máscara de bits
ExcludesBitmask
Excluye
Permite buscar propiedades de enteros como máscaras de bits y solo devolver resultados que tengan bits correspondientes al conjunto de máscaras de bits especificado.
Filtro exists
Exists
Exists
Devuelve todos los elementos que tienen la propiedad especificada presente, independientemente del valor.
Filtro de igualdad
IsEqualTo
IsNotEqualTo
IsEqualTo
IsNotEqualTo
Compara el valor de la propiedad especificada con un valor constante especificado o el valor de otra propiedad y devuelve todos los elementos que tienen un valor igual (en el caso de un filtro IsEqualTo ) o un valor no igual (en el caso de un filtro IsNotEqualTo ).
Filtro de pruebas relacionales
IsGreaterThan
IsGreaterThanOrEqualTo
IsLessThan
IsLessThanOrEqualTo
IsGreaterThan
IsGreaterThanOrEqualTo
IsLessThan
IsLessThanOrEqualTo
Devuelve todos los elementos que tienen un valor para la propiedad especificada en la relación adecuada con un valor constante especificado u otra propiedad. Por ejemplo, un filtro IsGreaterThan devuelve todos los elementos que tienen un valor mayor que el valor especificado en la propiedad especificada.
Filtro de negación
Not
Not
Niega el resultado de los demás filtros.
Filtro compuesto
SearchFilterCollection
And
Or
Combina varios filtros, lo que permite criterios de búsqueda más complejos.

Contiene el filtro

Un filtro contains es la mejor opción para buscar propiedades de cadena. Con un filtro contains, puede controlar aspectos de la coincidencia de cadenas, como la distinción entre mayúsculas y minúsculas y cómo se trata el espacio en blanco, estableciendo el modo de contención y el modo de comparación.

Contiene el filtro en la API administrada de EWS.

Si usa la API administrada de EWS, establezca el modo de contención mediante la propiedad ContainmentMode de la clase ContainsSubstring y establezca el modo de comparación mediante la propiedad ComparisonMode de la clase ContainsSubstring . En el ejemplo siguiente se muestra cómo crear un filtro de búsqueda que busca en el campo de asunto de los elementos la subcadena "notas de reunión". En este ejemplo se omiten mayúsculas y minúsculas, pero no se omiten los espacios en blanco.

// 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);

Contiene el filtro en EWS

En EWS, establezca el modo de contención mediante el atributo ContainmentMode en el elemento Contains y establezca el modo de comparación mediante el atributo ContainmentComparison en el elemento Contains . En el ejemplo siguiente se muestra cómo crear un filtro de búsqueda para buscar en el campo de asunto de los elementos la subcadena "notas de reunión". En este ejemplo se omiten mayúsculas y minúsculas, pero no se omiten los espacios en blanco.

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

Filtro de máscara de bits

Un filtro de máscara de bits permite buscar propiedades de enteros como máscaras de bits y devolver resultados donde no se establecen bits específicos en el valor de la propiedad especificada.

Filtro de máscara de bits en la API administrada de EWS

En el ejemplo siguiente se muestra cómo usar la API administrada de EWS para crear un filtro de búsqueda para devolver todos los elementos que tienen un valor en la propiedad personalizada ItemIndex (definida en el ejemplo: Buscar elementos mediante un filtro de búsqueda y la sección EWS Managed API de este artículo) que no tienen el segundo bit (10 en binario) establecido.

// 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);

Filtro de máscara de bits en EWS

En el ejemplo siguiente se muestra cómo usar EWS para crear un filtro de búsqueda para devolver todos los elementos que tienen un valor en la propiedad personalizada ItemIndex (definida en el ejemplo: Buscar elementos mediante un filtro de búsqueda y la sección EWS Managed API de este artículo) que no tienen el segundo bit (10 en binario) establecido.

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

Filtro exists

Un filtro existe permite buscar elementos que tengan una propiedad específica establecida en ellos, independientemente del valor.

Existe un filtro en la API administrada de EWS

En el ejemplo siguiente se muestra cómo crear un filtro de búsqueda para devolver todos los elementos que tienen establecida la propiedad personalizada ItemIndex .

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

Filtro existe en EWS

En el ejemplo siguiente se muestra cómo crear un filtro de búsqueda para devolver todos los elementos que tienen establecida la propiedad personalizada ItemIndex .

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

Filtro de igualdad

Los filtros de igualdad permiten buscar todos los elementos que tienen un valor para la propiedad especificada que es igual a un valor específico o no es igual a un valor específico. El valor que se va a comparar con puede ser un valor constante o el valor de otra propiedad en cada elemento.

Filtro de igualdad en la API administrada de EWS

En el ejemplo siguiente se muestra cómo usar la API administrada de EWS para crear un filtro de búsqueda para devolver todos los elementos que no se han leído.

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

En el ejemplo siguiente se muestra cómo crear un filtro de búsqueda para devolver todos los elementos que tienen un valor en la propiedad ItemIndex que no es igual al tamaño del elemento.

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

Filtro de igualdad en EWS

En el ejemplo siguiente se muestra cómo usar EWS para crear un filtro de búsqueda para devolver todos los elementos que no se han leído.

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

En el ejemplo siguiente se muestra cómo crear un filtro de búsqueda para devolver todos los elementos que tienen un valor en la propiedad ItemIndex que no es igual al tamaño del elemento.

<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>

Filtro de pruebas relacionales

Los filtros de pruebas relacionales permiten buscar todos los elementos que tienen un valor en la propiedad especificada que es mayor que (>), mayor o igual que (>=), menor que (<) o menor o igual que (<=) un valor especificado. El valor que se va a comparar con puede ser un valor constante o el valor de otra propiedad en cada elemento.

Filtro de pruebas relacionales en la API administrada de EWS

En el ejemplo siguiente se muestra cómo usar la API administrada de EWS para crear filtros de búsqueda para devolver todos los elementos con un valor en la propiedad ItemIndex que tiene la relación especificada con el valor 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);

Filtro de pruebas relacionales en EWS

En el ejemplo siguiente se muestra cómo usar EWS para crear un filtro de búsqueda para devolver todos los elementos con un valor en la propiedad ItemIndex que sea mayor que el valor 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>

En el ejemplo siguiente se muestra cómo crear un filtro de búsqueda para devolver todos los elementos con un valor en la propiedad ItemIndex mayor o igual que el valor 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>

En el ejemplo siguiente se muestra cómo crear un filtro de búsqueda para devolver todos los elementos con un valor en la propiedad ItemIndex que es menor que el valor 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>

En el ejemplo siguiente se muestra cómo crear un filtro de búsqueda para devolver todos los elementos con un valor en la propiedad ItemIndex que sea menor o igual que el valor 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>

Filtro de negación

Un filtro negante le permite negar otro filtro y obtener los resultados de búsqueda opuestos. Mientras que otros filtros devuelven resultados que coinciden con criterios específicos, un filtro negante devuelve resultados que no coinciden con los criterios especificados por el filtro al que se aplica.

Negación del filtro en la API administrada de EWS

En el ejemplo siguiente se muestra cómo usar la API administrada de EWS para crear un filtro de búsqueda para devolver todos los elementos que no tienen la subcadena "notas de reunión" en el asunto.

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

Negación del filtro en EWS

En el ejemplo siguiente se muestra cómo crear un filtro de búsqueda para devolver todos los elementos que no tienen la subcadena "notas de reunión" en el asunto.

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

Filtro compuesto

Un filtro compuesto le permite combinar varios filtros para crear criterios de búsqueda más complejos. Puede combinar criterios mediante los operadores lógicos AND o OR. De este modo, puede realizar búsquedas como "todo el correo de Sadie Daniels que contiene 'notas de reunión' en el asunto".

Filtro compuesto en la API administrada de EWS

En el ejemplo siguiente se muestra cómo usar la API administrada de EWS para crear un filtro de búsqueda que devuelva todos los elementos enviados desde Sadie Daniels y que contengan "notas de reunión" en el asunto.

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);

Filtro compuesto en EWS

En el ejemplo siguiente se muestra cómo usar EWS para crear un filtro de búsqueda que devuelve todos los elementos enviados desde Sadie Daniels y contienen "notas de reunión" en el asunto.

<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>

Ejemplo: Búsqueda de elementos mediante un filtro de búsqueda y la API administrada de EWS

Los siguientes métodos de API administrada de EWS usan filtros de búsqueda:

En el ejemplo siguiente se usa el método ExchangeService.FindItems ; sin embargo, las mismas reglas y conceptos se aplican a todos los métodos. En este ejemplo, se define un método denominado SearchWithFilter . Toma un objeto ExchangeService , un objeto WellKnownFolderName y un objeto SearchFilter como parámetros. En este ejemplo se asume que el objeto ExchangeService se ha inicializado con valores válidos en las propiedades Credentials y Url. La clase SearchFilter es la clase base de todos los filtros de búsqueda diferentes.

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);
    }
}

Puede usar esta función con cualquiera de los filtros de búsqueda que se muestran en los ejemplos de este artículo. En este ejemplo se usa un filtro compuesto para devolver todos los elementos de la Bandeja de entrada de Sadie Daniels con "notas de reunión" en el asunto.

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);

Ejemplo: Buscar un elemento mediante un filtro de búsqueda y EWS

Las siguientes operaciones de EWS usan filtros de búsqueda:

En el ejemplo siguiente se usa la operación FindItem ; sin embargo, las mismas reglas y conceptos se aplican a ambas operaciones. Los filtros de búsqueda se encuentran en el elemento Restriction de las solicitudes SOAP. En este ejemplo se envía una solicitud SOAP equivalente a la búsqueda que se muestra en el ejemplo anterior de la API administrada de EWS.

<?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>

En el ejemplo siguiente se muestra la respuesta del servidor, incluidos los resultados de la búsqueda.

<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>

Pasos siguientes

Ahora que está familiarizado con el uso de filtros de búsqueda en búsquedas básicas, puede pasar a técnicas de búsqueda más avanzadas.

Vea también