微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用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));

如果您拥有其他用户permissions to impersonate,则可以在连接到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服务器上进行实际测试,写了上面的代码.

原文地址:https://www.jb51.cc/html/230707.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐