2017-02-07 78 views
0

我試圖創建一個電子郵件客戶端,可以給我一個使用EWS託管API的特定日期的電子郵件列表,但當我調用Folder.Bind()時,我不斷收到異常。Folder.Bind引發ArgumentNullException

拋出的異常:mscorlib.dll中的'System.ArgumentNullException' 附加信息:值不能爲空。

Stack

它說,它是一個ArgumentNullException但一個參數是一個枚舉,而另一個不爲空在運行時。從堆棧看來,它似乎是EWS API中的一個例外,處理不好,但我不知道問題出在哪裏。

這是我的代碼。

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<Email> 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 => new Uri(x.ContentLocation)).ToList(); 
       standardEmail.CarbonCopy = exchangeEmail.CcRecipients.Select(x => 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 => outgoingMail.Attachments.AddFileAttachment(x.ToString())); 

      //Set addresses 
      email.To.ForEach(x => outgoingMail.ToRecipients.Add(new EmailAddress(x))); 
      email.CarbonCopy.ForEach(x => outgoingMail.CcRecipients.Add(new EmailAddress(x))); 
      email.BlindCarbonCopy.ForEach(x => outgoingMail.BccRecipients.Add(new EmailAddress(x))); 

      //Send 
      outgoingMail.SendAndSaveCopy(); 
     } 
    } 
} 

獲得這樣的物品拋出同樣的異常:

//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)); 

這發生在這兩個版本2.2.0和EWS API SDK 1.2.0。

回答

相關問題