首页 > 解决方案 > 在第三方地址上服务 AutoDiscoverUrl

问题描述

我在 StackOverFlow 上使用了一个示例,如下所示:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

//service.Credentials = new NetworkCredential( "{Active Directory ID}", "{Password}", "{Domain Name}" );

service.AutodiscoverUrl( "First.Last@MyCompany.com" );

FindItemsResults<Item> findResults = service.FindItems(
   WellKnownFolderName.Inbox,
   new ItemView( 10 ) 
);

foreach ( Item item in findResults.Items )
{
   Console.WriteLine( item.Subject );
}

目前,无论输入的电子邮件地址如何,它都会从我登录的 AD 帐户中检索邮件service.AutodiscoverUrl

是否需要填写service.Credentials才能访问其他用户的邮箱?

谢谢你。

标签: c#emailserviceexchangewebservices

解决方案


自动发现只是根据用户发现用于 EWS 的最佳端点,但不会影响您尝试访问的邮箱。对于凭据,您应该使用有权访问您尝试访问的任何内容的用户,如果您想访问邮箱以外的其他凭据,则您需要使用文件夹 id 类的邮箱覆盖,例如在您的示例中

            ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

            //service.Credentials = new NetworkCredential( "{Active Directory ID}", "{Password}", "{Domain Name}" );

            service.AutodiscoverUrl("First.Last@MyCompany.com");
            FolderId FolderToAccess = new FolderId(WellKnownFolderName.Inbox, "First.Last@MyCompany.com");

            FindItemsResults<Item> findResults = service.FindItems(
               FolderToAccess,
               new ItemView(10)
            );

            foreach (Item item in findResults.Items)
            {
                Console.WriteLine(item.Subject);
            }

推荐阅读