Office 365 Mail API在.NET中执行搜索

时间:2015-08-15 20:35:16

标签: c# search outlook odata office365

我正在开发一个可以在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中的客户端库完成搜索?

马塞尔

0 个答案:

没有答案