Как искать входящие с помощью Zend Mail - PullRequest
0 голосов
/ 01 января 2011

Ниже приведена функция из zend_mail_protocol_imap. Я прочитал это для поиска электронных писем, я хотел бы переопределить его с помощью zend_mail_storage_imap (это то, что я сейчас использую, чтобы получить электронную почту из gmail). Я скопировал и вставил следующую функцию в zend_mail_storage_imap, но у меня возникли проблемы с параметрами. Я не могу найти документацию о том, что использовать для массива $ 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 голосов
/ 29 января 2013

вот как я это сделал

$searchTerm = 'TEXT ' . $searchTerm ;
$searchresults = $storage->search(array($searchTerm));

Параметр поиска для zend такой же, как и для imap_search. Используйте http://php.net/manual/en/function.imap-search.php для дальнейшего использования.

0 голосов
/ 12 июня 2019

в хранилище \ imap (до сих пор) нет функции поиска, эта функция фактически находится в классе протокола.

для поиска в хранилище \ imap добавьте эту функцию:

public function search($params = null) {
    return $this->protocol->search($params);
}

теперь вы можете звонить вот так

$storage->search(array('SUBJECT "test","UNSEEN",'FROM "santa@northpole.org"'));

и результатом должен быть список идентификаторов / идентификаторов сообщений, как и imap_search. imho эта функция или метод получения протокола должны быть в классе хранения, но это не так.

0 голосов
/ 02 января 2011

Как насчет

$searchresults = $storage->search(array('search term'));
...