我正在尝试使用Exchange Web服务托管API从特定的邮箱(我拥有权限)中检索“收件箱”项目。我首先通过AutodiscoverUrl使用自己的电子邮件地址对代码进行了测试,并且效果很好。但是,当我尝试使用其他电子邮件地址时,EWS仍会检索自己的自己的收件箱项目。这是由于缓存还是其他原因?
我的代码如下:
ExchangeService ex = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
ex.AutodiscoverUrl("[email protected]");
FindItemsResults<Item> findResults = ex.FindItems(WellKnownFolderName.Inbox, new ItemView(10));
foreach (Item item in findResults.Items)
Console.WriteLine(item.Subject);
最佳答案
赋予AutodiscoverUrl
的电子邮件地址与您绑定(bind)到的邮箱无关。
有(至少)两种方法可从另一个用户邮箱获取收件箱项目:委派访问权限和模拟。
如果您具有对其他用户邮箱的委托(delegate)访问权限,则可以在对FindItems
的调用中将邮箱指定为参数:
FindItemsResults<Item> findResults = ex.FindItems(
new FolderId(WellKnownFolderName.Inbox, new Mailbox("[email protected]")),
new ItemView(10));
如果您拥有另一个用户permissions to impersonate,则可以在连接到EWS时模拟其他用户,并且以下对
FindItem
的调用将在模拟用户的收件箱中起作用:ExchangeService ex = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
ex.AutodiscoverUrl("[email protected]");
ex.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "[email protected]");
ItemsResults<Item> findResults = ex.FindItems(WellKnownFolderName.Inbox, new ItemView(10));
免责声明:我编写上面的代码时并未在实际的Exchange服务器上进行实际测试。
关于c# - 使用C#中的Exchange Web Services托管API检索到错误的邮箱项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9220900/