我正在开发一个可以在Office365 Mail中执行某些操作的C#桌面应用程序。 我在C#中使用客户端库来创建查询以检索电子邮件。 但我陷入了我想在我的应用程序中创建的搜索功能。
根据Resource reference of the Mail API,我可以使用$ search参数对收件箱执行搜索。 但我在客户端库中找不到任何功能来完成这个任务? 所以我尝试在where子句中使用String.Contains函数,但这会创建一个带$ filter的查询:
var query = (from i in client.Users[ConfigurationManager.AppSettings["SharedMailbox"]].Folders["Inbox"].Messages
where(i.From.EmailAddress.Address.Contains(searchString))
select new MessageCompact()
{
Id = i.Id,
ParentFolderId = i.ParentFolderId,
DateTimeReceivedOffset = i.DateTimeReceived,
Sender = i.Sender.EmailAddress.Address,
Subject = i.Subject,
BodyPreview = i.BodyPreview,
Categorieen = i.Categories
});
var messageResults = await foundedMessages.ExecuteAsync();
执行时我得到例外:
异常:抛出:" {"错误":{"代码":" ErrorInvalidUrlQueryFilter","消息":& #34;'含有'并且'始于'不支持过滤。请改用搜索。"}}" (Microsoft.OData.Client.DataServiceClientException) 抛出了Microsoft.OData.Client.DataServiceClientException:" {" error":{" code":" ErrorInvalidUrlQueryFilter"," message&# 34;:"'含有'并且'始于'不支持过滤。请改用搜索。"}}"
当我手动添加搜索选项时,使用此代码,我得到了异常
DataServiceQuery<Message> foundedMessages = client.Users[ConfigurationManager.AppSettings["SharedMailbox"]].Folders["Inbox"].Messages.Context
.CreateQuery<Message>("Users('xyz@abc.com')/Folders('Inbox')/Messages")
.AddQueryOption("$search", searchString);
例外:投掷:&#34;无法添加查询选项&#39; $ search&#39;因为它始于保留字符&#39; $&#39;。&#34; (System.NotSupportedException) 抛出了System.NotSupportedException:&#34;无法添加查询选项&#39; $ search&#39;因为它始于保留字符&#39; $&#39;。&#34;
如何使用.NET中的客户端库完成搜索?
马塞尔