You can use the Application.AdvancedSearch method which performs a search based on a specified DAV Searching and Locating (DASL) search string. Admittedly, the Search
class allows you to save the results of searching in a search folder (actually, it doesn’t contain any items, only references to items from the scope folders). You just need to call the Save
method on the Search
object in the AdvanvedSearchComplete
event handler to create a search folder with results.
To get the conversation items you can use the GetConversation method which obtains a Conversation
object that represents the conversation to which this item belongs. So, you may find all items that were not flagged/done and then process each item by getting the conversation it belongs to.
Finally, to find the required search criteria you may take a look at the Filtering Items article. For example, you may consider using the MailItem.IsMarkedAsTask and MailItem.TaskCompletedDate properties in your query.