使用Exchange Web Services管理的API在C#中检索错误的邮箱项目

前端之家收集整理的这篇文章主要介绍了使用Exchange Web Services管理的API在C#中检索错误的邮箱项目前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Exchange Web Services托管API从特定邮箱(在其中有权限)中检索收件箱项目.我已经使用自己的电子邮件地址通过AutodiscoverUrl测试了代码,它的工作正常.但是,当我尝试使用其他电子邮件地址时,EWS仍然会检索我自己的收件箱.这是由于缓存还是什么?

我的代码如下:

ExchangeService ex = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
    ex.AutodiscoverUrl("someothermailBox@company.com");

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

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

解决方法

提供给AutodiscoverUrl的电子邮件地址与您绑定到哪个邮箱无关.

有(至少)两种方法可以从其他用户邮箱获取收件箱:委托访问和模拟.

如果您具有对其他用户邮箱的委托访问权限,则可以在调用FindItems时将邮箱指定为参数:

FindItemsResults<Item> findResults = ex.FindItems(
    new FolderId(WellKnownFolderName.InBox,new MailBox("someothermailBox@company.com")),new ItemView(10));

如果您拥有其他用户的@L_502_0@,则可以在连接到EWS时模拟其他用户,并且对FindItem的以下调用将在模拟用户的收件箱中正常工作:

ExchangeService ex = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
ex.AutodiscoverUrl("someothermailBox@company.com");
ex.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress,"someothermailBox@company.com");
ItemsResults<Item> findResults = ex.FindItems(WellKnownFolderName.InBox,new ItemView(10));

免责声明:我没有在真正的Exchange服务器上进行实际测试,写了上面的代码.

猜你在找的HTML相关文章