我使用了“https://github.com/jasonjoh/php-tutorial”中描述的基本示例/教程,并尝试在getMessages()函数中添加“$ search”参数
$getMessagesParameters = array (
// Message Search Conditions
"\$search" => 'subject:"pizza"',
// Only return Subject, ReceivedDateTime, and From fields
"\$select" => "Subject,Body",
// Return at most 10 results
"\$top" => "10"
);
$getMessagesUrl = self::$outlookApiUrl."/Me/Messages?".http_build_query($getMessagesParameters);
$response = $this->makeApiCall($access_token, $user_email, "GET", $getMessagesUrl);
请求返回错误400
想知道什么是正确的语法
我已经提到了以下链接
https://msdn.microsoft.com/en-us/library/cc513841%28v=office.12%29.aspx
如果有人有更好的想法搜索邮件,请建议......
答案 0 :(得分:0)
您无法在搜索结果中使用orderby。 见https://msdn.microsoft.com/en-us/office/office365/api/complex-types-for-mail-contacts-calendar#UseODataqueryparametersSearchrequests $搜索=主题:"披萨"应该是$ search = subject:pizza。但那也不行。 我使用$ search = pizza并且有效(没有orderby)
答案 1 :(得分:0)
我已经找到了确切的问题......
问题不在于搜索参数规范/服务器REST端点...
但问题在于我们如何将查询参数发送到服务器...
我们不应该对数据进行网址编码。
但我们需要在结果网址
中用+
替换空格
这是我提出的解决方案......
$search_AQS = '"Subject:(pizza+OR+hamburger+OR+tacos)+AND+subject:(NOT+beef+NOT+pork)"';
$getMessagesParameters = array (
"\$search" => $search_AQS,
"\$select" => "Subject,Body",
"\$top" => "10"
);
$tmp_uripiece = http_build_query($getMessagesParameters);
$tmp_uripiece = urldecode($tmp_uripiece);
$getMessagesUrl = self::$outlookApiUrl.'/Me/Messages?'.$tmp_uripiece;
$response = $this->makeApiCall($access_token, $user_email, "GET", $getMessagesUrl);
耶!微软还支持其终端中的搜索功能......但是他们应该记录更多的例子......
感谢大家的支持......