Search code examples
exchange-serverexchangewebservices

Exchange Web Services: Finding emails sent to a recipient


I'm using Exchange Web Services to connect to a mailbox and look for messages matching certain criteria, using FindItems with a SearchFilter.

I can get emails in a mailbox filtering on 'from' email address like this:

var service = new ExchangeService(ExchangeVersion.Exchange2010_SP1)
            {
                TraceEnabled = true,
                Credentials = new WebCredentials(username, password)
            };

var filter = new SearchFilter.ContainsSubstring(EmailMessageSchema.From, "some@email.com");

service.FindItems(WellKnownFolderName.Inbox, filter, new ItemView(50))

And I can filter on the DisplayTo property like this:

var filter = new SearchFilter.ContainsSubstring(EmailMessageSchema.DisplayTo, "display name");

But as far as I can tell that only searches the recipient's display name. I want to search on an email address or domain name.

This doesn't return results when I would expect it to:

var filter = new SearchFilter.ContainsSubstring(EmailMessageSchema.ToRecipients, "some@email.com");

Is it possible to find all emails where the recipients list contains a specified email address?


Solution

  • I didn't find a way to use a SearchFilter to find emails based on recipient email address.

    It is possible using a different overload of ExchangeService.FindItems which takes a querystring.

    Finding emails where an address is in the To or Cc fields

    var contactEmailAddress = "some@email.com";
    
    var querystring = string.Format("Participants:={0}", contactEmailAddress);
    
    service.FindItems(WellKnownFolderName.Inbox, queryString, view);
    

    Finding emails where an address is in the From, To or Cc fields

    var contactEmailAddress = "some@email.com";
    
    var querystring = string.Format("(From:={0} OR Participants:={0})", contactEmailAddress);
    
    service.FindItems(WellKnownFolderName.Inbox, queryString, view);
    

    I think this feature requires Exchange 2010.

    Some additional resources on query syntax: