有的时候,在作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); } }