有的時候,在作Sharepoint開發的時候咱們須要獲取用戶的郵件信息,一般都是經過調用EWS API來實現。shell
如下是實現的核心代碼:dom
第一步須要在Exchange服務上受權一個帳戶有模擬其餘用戶的權限,在Exhcange服務上打開Exchange powershell命名窗口,輸入下面命名spa
New-ManagementRoleAssignment -Name:impersonationAssignmentName -Role:ApplicationImpersonation -User:須要受權的帳號server
//模擬用戶名,密碼,域 string ImpersonatedUser="test"; string ImpersonatedPwd="test"; string domain="test"; //目標用戶郵箱地址 string emailserverAddress="user1@test.com.cn"; //ExchangeService版本爲2013 ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013); service.Credentials = new NetworkCredential(ImpersonatedUser, ImpersonatedPwd, domain); //打開目標用戶的郵箱地址 service.Url = new Uri(emailserverAddress); //對目標用戶進行模擬 service.ImpersonatedUserId = new Microsoft.Exchange.WebServices.Data.ImpersonatedUserId(Microsoft.Exchange.WebServices.Data.ConnectingIdType.SmtpAddress, UserMailAddress); //只讀取目標用戶未讀的信息 SearchFilter sf = new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false); //只讀取前10條信息 ItemView view = new ItemView(int.Parse(top)); FindItemsResults<Item> findMailResults = service.FindItems(WellKnownFolderName.Inbox, sf, view); if (findMailResults.Count() > 0) { foreach (Item m in findMailResults) { EmailEntity em = new EmailEntity(); Microsoft.Exchange.WebServices.Data.EmailMessage e = Microsoft.Exchange.WebServices.Data.EmailMessage.Bind(service, m.Id); em.ID = e.Id.ToString(); em.Subject = e.Subject; lists.Add(em); } }