gpt4 book ai didi

exchange-server - FindItems() 和 BindToItems() 为 EmailMessage.Sender.Address 提供不一致的结果

转载 作者:行者123 更新时间:2023-12-02 04:35:26 26 4
gpt4 key购买 nike

经过大量调试后,我将复杂的托管 EWS 问题细化为以下两个简单的测试用例。第一个有效,第二个失败:

var view = new ItemView(100) { PropertySet = new PropertySet { EmailMessageSchema.Id } };
var findResults = ews.FindItems(WellKnownFolderName.Inbox, view)
var bindResults = ews.BindToItems(findResults.Select(r => r.Id), new PropertySet { EmailMessageSchema.Sender });

// Sanity check
Assert.AreEqual(1, bindResults.Count());

// The results I care about
Assert.AreEqual("David Seiler", bindResults[0].Sender.Name);
Assert.AreEqual("david.seiler@yahoo.com", bindResults[0].Sender.Address);

人们可能会尝试删除 BindToItems() 调用,并直接使用 FindItems():

var view = new ItemView(100) { PropertySet = new PropertySet { EmailMessageSchema.Sender } };
var findResults = ews.FindItems(WellKnownFolderName.Inbox, view)

// This part still works fine
Assert.AreEqual(1, findResults.Count());

// So does this
Assert.AreEqual("David Seiler", findResults[0].Sender.Name);

// ...but this fails! Sender.Address is null
Assert.AreEqual("david.seiler@yahoo.com", findResults[0].Sender.Address);

谁能告诉我哪里出错了?从文档来看,这确实应该可行。并非所有属性都可以通过 FindItems() 读取,这是事实,但当我尝试访问这些属性时,这些属性通常会抛出异常,无论如何都有一个 list MSDN 上的这些属性和 Sender 不在其中。这是怎么回事?

最佳答案

其实我不知道为什么,但在第二个选项中,它只加载发件人的基本信息,例如姓名,而不是地址。

如果您想加载所有发件人属性但不想绑定(bind)完整消息,您可以在第一个断言之前添加以下行

service.LoadPropertiesForItems(findResults.Items, new PropertySet(EmailMessageSchema.Sender));

关于exchange-server - FindItems() 和 BindToItems() 为 EmailMessage.Sender.Address 提供不一致的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8904741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com