【问题标题】:How can we access the exchange mailboxes via EWS when the user has no own mailbox?当用户没有自己的邮箱时,我们如何通过 EWS 访问交换邮箱?
【发布时间】:2021-04-06 10:16:44
【问题描述】:

我们希望通过 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访问exchange邮箱?

【问题讨论】:

    标签: c# .net exchange-server exchangewebservices independentsoft


    【解决方案1】:

    如果服务器被修补到正确的级别,它应该可以正常工作,例如可能存在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://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/impersonation-and-ews-in-exchange 可能是一个更好的选择,因为它可以让您访问所有邮箱。

    【讨论】:

    猜你喜欢
    • 2016-05-30
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多