Verwenden von Suchfiltern mit EWS in Exchange
Erfahren Sie, wie Sie mit der verwalteten EWS-API oder mit EWS in Exchange Suchfilter verwenden.
Suchfilter sind das primäre Tool zum Ausdrücken von Suchkriterien in Ihrer verwalteten EWS-API oder EWS-Anwendung. Für folgende Vorgänge empfehlen wir Suchfilter statt Abfragezeichenfolgen zu verwenden:
- Suchen nach einer bestimmten Eigenschaft oder mehreren Eigenschaften
- Suchen mithilfe von mehreren Suchkriterien
Suchfilter sind Ihre einzige Option, wenn Sie einen der folgenden Vorgänge ausführen möchten:
- Suchen nach benutzerdefinierten Eigenschaften
- Suchen nach Zeichenfolgen unter Beachtung der Groß-/Kleinschreibung
- Durchführen von Suchen in Zeichenfolgen nach Präfix- oder genauen Übereinstimmungen
- Durchführen von Bitmaskensuchen
- Suchen nach Elementen mit einem bestimmten Eigenschaftensatz, unabhängig des Werts
- Suchen nach Ordnern
- Erstellen von Suchordnern
Bestimmen der benötigten Suchfiltertypen
Bevor Sie einen Suchfilter erstellen, müssen Sie zunächst die benötigten Suchfiltertypen bestimmen. Die Filtertypen sind als nachfolgende Klassen der SearchFilter-Klasse in der verwalteten EWS-API, und als untergeordnete Elemente des Restriction-Elements in EWS implementiert.
Tabelle 1. Suchfiltertypen
Filtertyp | Verwaltete EWS-API-Klasse | EWS-Element | Beschreibung |
---|---|---|---|
"Enthält"-Filter |
ContainsSubstring |
Enthält |
Der beste Filtertyp für Zeichenfolgevergleiche. Damit können Sie die Groß-/Kleinschreibung überwachen, angeben, ob Leerzeichen ignoriert werden, und den Aufnahmemodus festlegen. |
Bitmaskenfilter |
ExcludesBitmask |
Schließt |
Damit können Sie nach ganzzahlige Eigenschaften als Bitmasken suchen und nur Ergebnisse zurückgeben, bei denen Bits entsprechend der angegebenen Bitmaske nicht festgelegt sind. |
"Vorhanden"-Filter |
Exists |
Exists |
Gibt alle Elemente zurück, bei denen die angegebene Eigenschaft vorhanden ist, unabhängig des Werts. |
Gleichheitsfilter |
IsEqualTo IsNotEqualTo |
IsEqualTo IsNotEqualTo |
Vergleicht den Wert der angegebenen Eigenschaft mit einem angegebenen Konstantenwert oder dem Wert einer anderen Eigenschaft und gibt alle Elemente mit einem gleichen Wert (im Falle eines IsEqualTo-Filters) oder einen nicht gleichen Wert (im Falle eines IsNotEqualTo-Filters) zurück. |
Relationaler Testfilter |
IsGreaterThan IsGreaterThanOrEqualTo IsLessThan IsLessThanOrEqualTo |
IsGreaterThan IsGreaterThanOrEqualTo IsLessThan IsLessThanOrEqualTo |
Gibt alle Elemente zurück, die für die angegebene Eigenschaft in der entsprechenden Beziehung einen Wert für einen angegebenen Konstantenwert oder eine andere Eigenschaft besitzen. Ein IsGreaterThan-Filter gibt alle Elemente zurück, die einen höheren Wert besitzen als der angegebene Wert in der angegebenen Eigenschaft. |
Aufhebungsfilter |
Not |
not |
Hebt das Ergebnis der anderen Filter auf. |
Zusammengesetzter Filter |
SearchFilterCollection |
Und - oder - |
Kombiniert mehrere Filter, damit komplexere Suchkriterien möglich sind. |
"Enthält"-Filter
Ein "Enthält"-Filter ist die beste Wahl zum Durchsuchen von Zeichenfolgeneigenschaften. Mit einem "Enthält"-Filter können Sie Aspekte des Zeichenfolgeabgleichs steuern, wie z. B. die Groß-/Kleinschreibung und die Behandlung von Leerzeichen, indem Sie den Aufnahme- und Vergleichsmodus festlegen.
Der "Enthält"-Filter in der verwalteten EWS-API
Wenn Sie die verwaltete EWS-API verwenden, legen Sie den Aufnahmemodus fest, indem Sie die ContainmentMode-Eigenschaft der ContainsSubstring-Klasse verwenden, und Sie legen den Vergleichsmodus fest, indem Sie die ComparisonMode-Eigenschaft der ContainsSubstring-Klasse verwenden. In den folgenden Beispielen wird veranschaulicht, wie Sie einen Suchfilter erstellen, der das Betrefffeld der Elemente nach der Teilzeichenfolge „Besprechungsnotizen" durchsucht. In diesem Beispiel wird die Groß-/Kleinschreibung ignoriert, Leerzeichen jedoch nicht.
// 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);
Der "Enthält"-Filter in EWS
In EWS legen Sie den Aufnahmemodus fest, indem Sie das ContainmentMode-Attribut für das Enthält-Element verwenden, und den Vergleichsmodus festlegen, indem Sie das ContainmentComparison-Attribut für das Contains-Element verwenden. Im folgenden Beispiel wird veranschaulicht, wie einen Suchfilter zum Durchsuchen des Suchfelds von Elementen nach der Teilzeichenfolge „Besprechungsnotizen" erstellen. In diesem Beispiel wird die Groß-/Kleinschreibung ignoriert, Leerzeichen jedoch nicht.
<t:Contains ContainmentMode="Substring" ContainmentComparison="IgnoreCase">
<t:FieldURI FieldURI="item:Subject" />
<t:Constant Value="meeting notes" />
</t:Contains>
Bitmaskenfilter
Mit einem Bitmaskenfilter können Sie ganzzahlige Eigenschaften als Bitmasken durchsuchen, und Ergebnisse zurückgeben, in denen bestimmte Bits nicht im Wert der angegebenen Eigenschaft festgelegt sind.
Bitmaskenfilter in der verwalteten EWS-API
Im folgenden Beispiel wird veranschaulicht, wie Sie die verwaltete EWS-API zum Erstellen eines Suchfilters verwendet wird, um alle Elemente zurückzugeben, bei denen sich in der benutzerdefinierten ItemIndex-Eigenschaft ein Wert befindet (definiert im Abschnitt Beispiel: Suchen von Elementen mithilfe eines Suchfilters und der verwalteten EWS-API dieses Artikels), die den sekundären Bitsatz (10 in der Binärdatei) nicht aufweisen.
// 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);
Bitmaskenfilter in EWS
Im folgenden Beispiel wird veranschaulicht, wie Sie mithilfe von EWS einen Suchfilter erstellen können, um alle Elemente zurückzugeben, die in der benutzerdefinierten ItemIndex-Eigenschaft (definiert im Abschnitt Beispiel: Suchen von Elementen mithilfe eines Suchfilters und der verwalteten EWS-API dieses Artikels), die den sekundären Bitsatz (10 in der Binärdatei) nicht aufweisen.
<t:Excludes>
<t:ExtendedFieldURI PropertySetId="aa3df801-4fc7-401f-bbc1-7c93d6498c2e" PropertyName="ItemIndex" PropertyType="Integer" />
<t:Bitmask Value="2" />
</t:Excludes>
"Vorhanden"-Filter
Mit einem "Vorhanden"-Filter können Sie nach Elementen suchen, die unabhängig des Werts einen bestimmten Eigenschaftensatz besitzen.
"Vorhanden"-Filter in der verwalteten EWS-API
Im folgenden Beispiel wird veranschaulicht, wie ein Suchfilter erstellt wird, mit dem alle Elemente zurückgegeben werden, die einen benutzerdefinierten ItemIndex-Eigenschaftensatz besitzen.
// Find all items that have the custom property set.
SearchFilter.Exists customPropSetFilter =
new SearchFilter.Exists(customPropDefinition);
"Vorhanden"-Filter in EWS
Im folgenden Beispiel wird veranschaulicht, wie ein Suchfilter erstellt wird, um alle Elemente zurückzugeben, die den benutzerdefinierten ItemIndex-Eigenschaftensatz aufweisen.
<t:Exists>
<t:ExtendedFieldURI PropertySetId="aa3df801-4fc7-401f-bbc1-7c93d6498c2e" PropertyName="ItemIndex" PropertyType="Integer" />
</t:Exists>
Gleichheitsfilter
Mit Gleichheitsfiltern können Sie nach allen Elementen suchen, die einen Wert für die bestimmte Eigenschaft aufweisen, die mit einem bestimmten Wert übereinstimmt oder mit einem bestimmten Wert nicht übereinstimmt. Der zu vergleichende Wert kann ein Konstantenwert oder der Wert zu einer anderen Eigenschaft jedes Elements sein.
Der Gleichheitsfilter in der verwalteten EWS-API
Im folgenden Beispiel wird veranschaulicht, wie Sie die verwaltete EWS-API zum Erstellen eines Suchfilters verwenden können, damit alle Elemente zurückgegeben werden, die noch nicht gelesen wurden.
// Find all items that are not marked as read.
SearchFilter.IsEqualTo unreadFilter =
new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false);
Im folgenden Beispiel wird veranschaulicht, wie ein Suchfilter erstellt wird, um alle Elemente zurückzugeben, die einen Wert in der ItemIndex-Eigenschaft besitzen, der nicht mit der Größe des Elements übereinstimmt.
// Find all items that are marked as read.
SearchFilter.IsNotEqualTo indexNotEqualToSizeFilter =
new SearchFilter.IsNotEqualTo(customPropDefinition, ItemSchema.Size);
Gleichheitsfilter in EWS
Im folgenden Beispiel wird veranschaulicht, wie EWS zum Erstellen eines Suchfilters verwendet wird, damit alle Elemente zurückgegeben werden, die noch nicht gelesen wurden.
<t:IsEqualTo>
<t:FieldURI FieldURI="message:IsRead" />
<t:FieldURIOrConstant>
<t:Constant Value="false" />
</t:FieldURIOrConstant>
</t:IsEqualTo>
Im folgenden Beispiel wird veranschaulicht, wie ein Suchfilter erstellt wird, sodass alle Elemente mit einem Wert in der ItemIndex-Eigenschaft zurückgegeben wird, der nicht mit der Größe des Elements übereinstimmt.
<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>
Relationaler Testfilter
Mit relationalen Testfiltern können Sie nach allen Elementen suchen, die in der angegebenen Eigenschaft einen Wert aufweisen, der entweder größer als (>), größer als oder gleich (>=), kleiner als (<), oder kleiner als oder gleich (<=) einem angegebenen Wert ist. Der zu vergleichende Wert kann ein Konstantenwert oder der Wert einer anderen Eigenschaft der einzelnen Elemente sein.
Der relational Testfilter in der verwalteten EWS-API
Im folgenden Beispiel wird veranschaulicht, wie die verwaltete EWS-API zum Erstellen von Suchfiltern verwendet werden kann, damit alle Elemente mit einem Wert in der ItemIndex-Eigenschaft zurückgegeben werden, die die angegebene Beziehung zum Konstantenwert 3 aufweisen.
// 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);
Der relationale Testfilter in EWS
Im folgenden Beispiel wird veranschaulicht, wie Sie EWS zum Erstellen eines Suchfilters verwenden können, damit alle Elemente mit einem Wert in der ItemIndex-Eigenschaft zurückgegeben werden, der höher ist als Konstantenwert 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>
Im folgenden Beispiel wird veranschaulicht, wie Sie einen Suchfilter erstellen können, damit alle Elemente mit einem Wert in der ItemIndex-Eigenschaft zurückgegeben werden, der größer oder gleich Konstantenwert 3 ist.
<t:IsGreaterThanOrEqualTo>
<t:ExtendedFieldURI PropertySetId="aa3df801-4fc7-401f-bbc1-7c93d6498c2e" PropertyName="ItemIndex" PropertyType="Integer" />
<t:FieldURIOrConstant>
<t:Constant Value="3" />
</t:FieldURIOrConstant>
</t:IsGreaterThanOrEqualTo>
Im folgenden Beispiel wird veranschaulicht, wie Sie einen Suchfilter erstellen können, damit alle Elemente mit einem Wert in der ItemIndex-Eigenschaft zurückgegeben werden, der kleiner ist als Konstantenwert 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>
Im folgenden Beispiel wird veranschaulicht, wie Sie einen Suchfilter erstellen, damit alle Elemente mit einem Wert in der ItemIndex-Eigenschaft zurückgegeben werden, der kleiner oder gleich Konstantenwert 3 ist.
<t:IsLessThanOrEqualTo>
<t:ExtendedFieldURI PropertySetId="aa3df801-4fc7-401f-bbc1-7c93d6498c2e" PropertyName="ItemIndex" PropertyType="Integer" />
<t:FieldURIOrConstant>
<t:Constant Value="3" />
</t:FieldURIOrConstant>
</t:IsLessThanOrEqualTo>
Aufhebungsfilter
Mit einem Aufhebungsfilter können Sie einen anderen Filter aufheben und gegenteilige Suchergebnisse erhalten. Während andere Filter Ergebnisse zurückgeben, die mit einem bestimmten Suchkriterium übereinstimmen, gibt ein Aufhebungsfilter Ergebnisse zurück, die nicht mit dem angegebenen Filterkriterium übereinstimmen.
Der Aufhebungsfilter in der verwalteten EWS-API
Im folgenden Beispiel wird veranschaulicht, Sie sie die verwaltete EWS-API zum Erstellen eines Suchfilters verwenden können, damit alle Elemente zurückgegeben werden, in denen die Teilzeichenfolge „Besprechungsnotizen" nicht im Betreff enthalten ist.
SearchFilter.ContainsSubstring subjectFilter = new SearchFilter.ContainsSubstring(ItemSchema.Subject,
"meeting notes", ContainmentMode.Substring, ComparisonMode.IgnoreCase);
SearchFilter.Not subjectNotFilter =
new SearchFilter.Not(subjectFilter);
Der Aufhebungsfilter in EWS
Im folgenden Beispiel wird veranschaulicht, wie Sie einen Suchfilter erstellen können, damit alle Elemente zurückgegeben werden, in denen die Teilzeichenfolge„Besprechungsnotizen" nicht im Betreff enthalten ist.
<t:Not>
<t:Contains ContainmentMode="ExactPhrase" ContainmentComparison="IgnoreCase">
<t:FieldURI FieldURI="item:Subject" />
<t:Constant Value="meeting notes" />
</t:Contains>
</t:Not>
Zusammengesetzter Filter
Mit einem zusammengesetzten Filter können Sie mehrere Filter kombinieren, um komplexere Suchkriterien erstellen zu können. Sie können Kriterien mithilfe des logischen Operators AND oder OR kombinieren. Auf diese Weise können Sie Suchvorgänge wie "alle E-Mails von Sadie Daniels, die 'Besprechungsnotizen' im Betreff enthalten", durchführen.
Der zusammengesetzte Filter in der verwalteten EWS-API
Im folgenden Beispiel wird veranschaulicht, wie Sie die verwaltete EWS-API zum Erstellen eines Suchfilters verwenden können, damit alle Elemente zurückgegeben werden, die von Sadie Daniels gesendet wurden und „Besprechungsnotizen" im Betreff enthalten.
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);
Der zusammengesetzte Filter in EWS
Im folgenden Beispiel wird veranschaulicht, wie EWS zum Erstellen eines Suchfilters verwendet werden kann, damit alle Elemente zurückgegeben werden, die von Sadie Daniels gesendet wurden und „Besprechungsnotizen" im Betreff enthalten.
<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>
Beispiel: Suchen von Elementen mithilfe eines Suchfilters und der verwalteten EWS-API
Folgende verwaltete EWS-API-Methoden verwenden Suchfilter:
Im folgenden Beispiel wird die ExchangeService.FindItems-Methode verwendet; die gleichen Regeln und Konzepte gelten jedoch für alle Methoden. In diesem Beispiel wird eine Methode mit der Bezeichnung SearchWithFilter definiert. Als Parameter ist ein ExchangeService-Objekt, ein WellKnownFolderName-Objekt und ein SearchFilter-Objekt erforderlich. In diesem Beispiel wird davon ausgegangen, dass das ExchangeService-Objekt mit gültigen Werten in den Credentials- und Url-Eigenschaften initialisiert wurde. Die SearchFilter-Klasse ist die Basisklasse für alle verschiedenen Suchfilter.
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);
}
}
Sie können diese Funktion mit jedem in den Beispielen dieses Artikels veranschaulichten Suchfilter verwenden. In diesem Beispiel wird ein zusammengesetzter Filter verwendet, damit alle Elemente aus dem Posteingang von Sadie Daniels mit „Besprechungsnotizen“ im Betreff zurückgegeben werden.
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);
Beispiel: Suchen eines Elements mithilfe eines Suchfilters und EWS
Folgende EWS-Operationen verwenden Suchfilter:
Im folgenden Beispiel wird die FindItem-Operation verwendet; die gleichen Regeln und Konzepte gelten jedoch für beide Operationen. Suchfilter sind im Restriction-Element in SOAP-Anforderungen enthalten. In diesem Beispiel wird eine SOAP-Anforderung gesendet, die der Suche entspricht, die im vorangegangenen Beispiel der verwalteten EWS-API veranschaulicht wird.
<?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>
Im folgenden Beispiel wird die Antwort vom Server einschließlich der Suchergebnisse veranschaulicht.
<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>
Nächste Schritte
Da Sie nun mit der Verwendung von Suchfiltern in einfachen Suchen vertraut sind, können Sie mit fortschrittlicheren Suchtechniken fortfahren.