Filtern des Textkörpers eines E-Mail-Elements

Im Codebeispiel in diesem Thema wird die Inhaltsindizierung in einer DASL-Abfrage zum Suchen von E-Mail-Elementen veranschaulicht, deren Text ein bestimmtes Wort enthält.Im Codebeispiel wird ein DASL-Filter für die Eigenschaft urn:schemas:httpmail:textdescription (die Body -Eigenschaft, auf die anhand des DAV-Namespaces verwiesen wird) eingerichtet und mithilfe des Schlüsselworts ci_phrasematch für die Inhaltsindizierung im Text nach dem Wort "office" gesucht.

Dann wird der Filter auf Elemente im aktuellen Ordner angewendet. Zum Zugreifen auf die Filterergebnisse wird das Table -Objekt verwendet, und die Betreffzeile jedes Elements wird gedruckt.Beachten Sie, dass in diesem Beispiel der Betreff jeder Zeile im zurückgegebenen Table -Objekt gedruckt wird; die Subject -Eigenschaft ist in einem Table -Objekt enthalten, das durch eine Suche für einen beliebigen Ordner zurückgegeben wird. Um auf die Filterergebnisse zuzugreifen, wird das Table-Objekt verwendet und die Betreffzeile jedes Elements gedruckt.

Beachten Sie, dass in diesem Beispiel der Betreff jeder Zeile in der zurückgegebenen Tabelle gedruckt wird. Die Subject-Eigenschaft ist in einer Tabelle enthalten, die von einer Suche in einem beliebigen Ordner zurückgegeben wird. Wenn Sie auf eine für einen Elementtyp spezifische Eigenschaft zugreifen möchten, verwenden Sie Columns.Add, um die Eigenschaft einzuschließen und das Table -Objekt zu aktualisieren. Wenn Sie auf eine Eigenschaft zugreifen möchten, die für einen Elementtyp spezifisch ist, verwenden Sie Columns.Add , um diese Eigenschaft einzuschließen und die Tabelle zu aktualisieren. Überprüfen Sie für jede Zeile, die in der Tabelle zurückgegeben wird, den Nachrichtentyp des Elements, bevor Sie auf die Eigenschaft zugreifen.

Hinweis Die Inhaltsindizierung in einer DASL-Abfrage bietet eine bessere Leistung als das Like-Schlüsselwort. However, you can filter only on the text of the item body; if the body contains HTML tags, as in an HTML-formatted mail item, the tags will not be filtered. The match is not case-sensitive, so for example, any item containing "Office" or "office" in the body will be returned by Folder.GetTable. Sie können auch bis zu den ersten 255 Zeichen des Textkörpers in einer Spalte einer Tabelle zurückgeben, indem Sie die Spalte (bezeichnet durch urn:schemas:httpmail:textdescription) zur Tabelle hinzufügen. You cannot use a Jet query to filter on the Body property.

Sub RestrictUsingBody() 
 Dim strFilter As String 
 Dim oT As Table 
 Dim oRow as Row 
 
 'Create DASL query for Body using content indexing phrase match for 'office' 
 strFilter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:textdescription" _ 
 & Chr(34) & " ci_phrasematch 'office'" 
 'Obtain Table by applying the filter on the current folder 
 Set oT = Application.ActiveExplorer.CurrentFolder.GetTable(strFilter) 
 'Print subject line of each mail item in current folder that contains 'office' in the body 
 Do Until oT.EndOfTable 
 Set oRow = oT.GetNextRow 
 Debug.Print oRow("Subject") 
 Loop 
End Sub

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.