// For complete examples and data files, please go to https://github.com/groupdocs-search/GroupDocs.Search-for-.NET
public void OpenFoundMessageUsingAsposeEmail(string searchString)
{
string myPstFile = Utilities.pathToPstFile;
// Indexing MS Outlook storage with email messages
Index index = new Index(Utilities.indexPath);
index.OperationFinished += Utilities.index_OperationFinished;
index.AddToIndex(myPstFile);
// Searching in index
SearchResults results = index.Search(searchString);
// User gets all messages that qualify to search query using Aspose.Email API
MessageInfoCollection messages = new MessageInfoCollection();
foreach (DocumentResultInfo searchResult in results)
{
if (searchResult.DocumentType == DocumentType.OutlookEmailMessage)
{
OutlookEmailMessageResultInfo emailResultInfo = searchResult as OutlookEmailMessageResultInfo;
MessageInfo message = GetEmailMessagesById(Utilities.pathToPstFile, emailResultInfo.EntryIdString);
if (message != null)
{
messages.Add(message);
}
}
}
}
private MessageInfo GetEmailMessagesById(string fileName, string fieldId)
{
PersonalStorage pst = PersonalStorage.FromFile(fileName, false);
return GetEmailMessagesById(pst.RootFolder, fieldId);
}
private MessageInfo GetEmailMessagesById(FolderInfo folderInfo, string fieldId)
{
MessageInfo result = null;
MessageInfoCollection messageInfoCollection = folderInfo.GetContents();
foreach (MessageInfo messageInfo in messageInfoCollection)
{
if (messageInfo.EntryIdString == fieldId)
{
result = messageInfo;
break;
}
}
if (result == null && folderInfo.HasSubFolders)
{
foreach (FolderInfo subfolderInfo in folderInfo.GetSubFolders())
{
result = GetEmailMessagesById(subfolderInfo, fieldId);
if (result != null)
{
break;
}
}
}
return result;
}