以下是zend_mail_protocol_imap的功能。我读到要搜索电子邮件,我想使用zend_mail_storage_imap覆盖它(这是我现在用来从gmail抓取电子邮件)。我将以下函数复制并粘贴到zend_mail_storage_imap中,但我遇到了params的问题。我找不到有关用于数组$ params的内容的文档。在最初阅读之前,我最初认为这是搜索词。我没有想法。这是函数......
/**
* do a search request
*
* This method is currently marked as internal as the API might change and is not
* safe if you don't take precautions.
*
* @internal
* @return array message ids
*/
public function search(array $params)
{
$response = $this->requestAndResponse('SEARCH', $params);
if (!$response) {
return $response;
}
foreach ($response as $ids) {
if ($ids[0] == 'SEARCH') {
array_shift($ids);
return $ids;
}
}
return array();
}
最初我认为这样可以解决问题......
$storage = new Zend_Mail_Storage_Imap($imap);
$searchresults = $storage->search('search term');
以下是错误消息:
可捕获的致命错误:参数1 传递给 Zend_Mail_Storage_Imap :: search()必须 是一个数组,字符串给定,调用 在...
但是不,我需要在数组中发送信息。有什么想法吗?
答案 0 :(得分:0)
怎么样
$searchresults = $storage->search(array('search term'));
答案 1 :(得分:0)
这就是我做的方式
$searchTerm = 'TEXT ' . $searchTerm ;
$searchresults = $storage->search(array($searchTerm));
zend的搜索参数与imap_search相同。使用http://php.net/manual/en/function.imap-search.php进一步参考。
答案 2 :(得分:0)
在Storage \ imap中(仍然)没有搜索功能,该功能实际上在协议类中。
要在存储中进行搜索\ imap,请添加以下功能:
public function search($params = null) {
return $this->protocol->search($params);
}
现在您应该可以这样拨打电话
$storage->search(array('SUBJECT "test","UNSEEN",'FROM "santa@northpole.org"'));
,结果应该是消息ID / UID的列表,就像imap_search一样。 恕我直言,此函数或协议的获取器应位于存储类中,但不是。