当用户没有自己的邮箱时,我们如何通过EWS访问exchange邮箱



我们希望使用没有自己邮箱的专用用户通过EWS(Exchange Web服务(访问邮箱。

目标是覆盖2007-2019版的所有Exchange Server。

我们希望有一个没有邮箱的专用用户的原因:我们希望通过软件分析Exchange Server中的所有邮箱。但因此,我们并不真正需要用户,甚至不需要邮箱。只有邮箱中的数据才是软件感兴趣的。

我们使用Independentsoft的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访问exchange邮箱?

如果服务器被修补到正确的级别,它应该可以正常工作,例如可能会出现以下问题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模拟可能符合您的要求https://learn.microsoft.com/en-us/exchange/client-developer/exchange-web-services/impersonation-and-ews-in-exchange是一个更好的选择,因为这将使您可以访问所有邮箱。

相关内容

最新更新