如何解决当用户没有自己的邮箱时,我们如何通过 EWS 访问交换邮箱?
我们希望通过 EWS(Exchange Web 服务)使用没有自己邮箱的专用用户访问邮箱。
目标是涵盖所有 Exchange Server 版本 2007-2019。
我们想要一个没有邮箱的专用用户的原因:我们想通过软件分析 Exchange Server 中的所有邮箱。但因此我们并不真正需要一个用户,甚至一个邮箱。软件只对邮箱内的数据感兴趣。
我们使用 Independentsoft´s API 访问 EWS:
var lCredential = new NetworkCredential("ADUserWithNoMailBox","Password");
m_Service = new Service("https://hostname/EWS/Exchange.asmx",lCredential);
try
{
FindFolderResponse lResponse = m_Service.FindFolder(StandardFolder.MailBoxRoot);
// [...]
}
catch (Exception e)
{
// cast in into multiple expected types
var lServiceRequestException = e as independentsoft.Exchange.ServiceRequestException;
if (lServiceRequestException.ResponseCode == "ErrorNonExistentMailBox")
{
// lServiceRequestException.Message shows: "No mailBox with such guid."
// [...]
}
// [...]
throw;
}
我们在 Active Directory 中的用户 ADUserWithNoMailBox
没有邮箱。因此消息出现异常:
"No mailBox with such guid."
问题:当用户没有自己的邮箱时,我们如何通过 EWS 访问交换邮箱?
解决方法
如果服务器打补丁到正确的级别,它应该可以正常工作,例如可能会出现https://support.microsoft.com/en-us/topic/-the-smtp-address-has-no-mailbox-associated-with-it-error-when-you-access-a-user-s-mailbox-by-using-ews-application-c8e31e36-b6e2-229e-cc78-305ab9fea94a之类的问题。如果您在不同的客户环境中部署应用程序并且发现大多数 OnPrem 部署为您提供使用邮箱的服务帐户不是问题,我一直发现这会出现问题,要阻止它出现在地址列表中,大多数客户可以将其隐藏。 (Office365 是另一回事,因为消耗许可证的成本,但您可以使用不需要用户或邮箱的应用程序令牌)
对于您的要求,使用 EWS Impersonation https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/impersonation-and-ews-in-exchange 可能是更好的选择,因为它可以让您访问所有邮箱。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。