title: Folder.Bind Throws ArgumentNullException
body: <p>I'm trying to create an email client that can give me a list of emails from a certain date using the EWS Managed API but I keep getting an exception when I call Folder.Bind().</p>
  
  <blockquote>
    <p>Exception thrown: 'System.ArgumentNullException' in mscorlib.dll
    Additional information: Value cannot be null.</p>
  </blockquote>
  
  <p><a href="https://i.stack.imgur.com/sA00y.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/sA00y.png" alt="Stack"></a></p>
  
  <p>It says it's an ArgumentNullException but one parameter is an enum and the other is not null at runtime. From the stack it seems to be an exception from within the EWS API that wasn't handled nicely but I don't know what the problem is.</p>
  
  <p>Here's my code.</p>
  
  <pre><code>using Microsoft.Exchange.WebServices.Data;
  using System;
  using System.Collections.Generic;
  using System.Linq;
  
  namespace Integration
  {
      public class ExchangeEmailClient : EmailClientBase
      {
          public ExchangeEmailClient(string emailAddress, string password)
          {
              ExchangeService = new ExchangeService();
              ExchangeService.Credentials = new WebCredentials(emailAddress, password);
              ExchangeService.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
          }
  
          public ExchangeService ExchangeService { get; private set; }
  
          public override IEnumerable&lt;Email&gt; Receive(DateTime getFrom)
          {
              //Get emails
              var inbox = Folder.Bind(ExchangeService, WellKnownFolderName.Inbox); //Exception thrown here!
              var filter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsGreaterThan(ItemSchema.DateTimeReceived, getFrom));
              var emails = inbox.FindItems(filter, new ItemView(int.MaxValue));
  
              //Transform (use data transformation tool?)
              foreach (EmailMessage exchangeEmail in emails)
              {
                  var standardEmail = new Email();
                  standardEmail.Body = exchangeEmail.Body;
                  standardEmail.Subject = exchangeEmail.Subject;
                  standardEmail.From = exchangeEmail.From.Address;
  
                  standardEmail.Attachments = exchangeEmail.Attachments.Select(x =&gt; new Uri(x.ContentLocation)).ToList();
                  standardEmail.CarbonCopy = exchangeEmail.CcRecipients.Select(x =&gt; x.Address).ToList();
  
                  yield return standardEmail;
              }
          }
  
          public override void Send(Email email)
          {
              var outgoingMail = new EmailMessage(ExchangeService);
              outgoingMail.Body = email.Body;
              outgoingMail.Subject = email.Subject;
              outgoingMail.From = new EmailAddress(email.From);
  
              //Get attachments
              email.Attachments.ForEach(x =&gt; outgoingMail.Attachments.AddFileAttachment(x.ToString()));
  
              //Set addresses
              email.To.ForEach(x =&gt; outgoingMail.ToRecipients.Add(new EmailAddress(x)));
              email.CarbonCopy.ForEach(x =&gt; outgoingMail.CcRecipients.Add(new EmailAddress(x)));
              email.BlindCarbonCopy.ForEach(x =&gt; outgoingMail.BccRecipients.Add(new EmailAddress(x)));
  
              //Send
              outgoingMail.SendAndSaveCopy();
          }
      }
  }
  </code></pre>
  
  <p>Getting the items like this throws the same exception:</p>
  
  <pre><code>//Get emails 
  var filter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsGreaterThan(ItemSchema.DateTimeReceived, getFrom)); 
  var emails = ExchangeService.FindItems(WellKnownFolderName.Inbox, filter, new ItemView(int.MaxValue)); 
  </code></pre>
  
  <p>This happens in both version 2.2.0 and 1.2.0 of the EWS API SDK.</p>