在《使用EWS访问Exchange邮件》一篇中提到了使用exchange web service访问邮件时的方法,以及遇到过的一些问题。这一篇讲述一下如何通过某一个用户的凭据来获取所有收件人的邮件信息。
1、打开Exchange Management Shell,执行如下命令:
New-ManagementRoleAssignment -Name:ImpersonationAssignmentName -Role:ApplicationImpersonation -User:serviceAccount
其中serviceAccount就是所使用的用户凭据的用户名。该命令的作用是为某一个用户授予模仿其它账户的权限。
2、在代码中指定需要模仿的账户:
service.Credentials = new WebCredentials(“lfx”, “password”, "contoso.com”); //使用普通账户测试,lfx已授权模仿其它账户
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, “administrator@contoso.com”);
之后运行即可。
另外,只要将某个用户加入到Exchange Servers组中,就能通过OWA来收取其它账户的邮件。但无法使用管理员账户来收取其它账户的邮件,貌似是Exchange的内部限制。读取其它账户的邮件时,只要在OWA的路径后加上需要访问的邮箱帐号即可,如:
http://contoso-exchange.contoso.com/owa/administrator@contoso.com