如何使用zend邮件搜索收件箱

时间:2010-12-31 22:45:31

标签: php email zend-framework zend-mail

以下是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()必须   是一个数组,字符串给定,调用   在...

但是不,我需要在数组中发送信息。有什么想法吗?

3 个答案:

答案 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一样。 恕我直言,此函数或协议的获取器应位于存储类中,但不是。

相关问题