Хорошо, с почтовым клиентом ZETA не повезло, и теперь я попытался установить клиентскую библиотеку Horde IMAP. Мне удалось войти в свою учетную запись и выполнить поиск по электронной почте, также вернул результаты, но я не знаю, как получить данные электронной почты, и документация на самом деле не помогает: |
Я предполагаю, что мне придется использовать Horde_Imap_Client_Base::fetch()
метод получения электронной почты, который принимает два параметра: имя почтового ящика и Horde_Imap_Client_Fetch_Query
объект, но я не знаю, как получить этот второй объект: |
Должен ли этот объект быть возвращен одной из функций Base, или я должен построить этот объект с параметрами запроса, которые я хочу? Если второе, как мне перестроить свой поисковый запрос в объекте запроса извлечения из приведенного ниже примера?
Вот как я ищу свой почтовый ящик для писем от определенного контакта в определенный день:
$client = new Horde_Imap_Client_Socket(array(
'username' => '[email protected]',
'password' => 'xxxxxxxxxx',
'hostspec' => 'my.mail.server',
'port' => '143',
'debug' => '/tmp/foo',
));
$query = new Horde_Imap_Client_Fetch_Query();
$query->dateSearch(new Date(), Horde_Imap_Client_Search_Query::DATE_ON);
$query->headerText("from","[email protected]");
$results = $client->search('INBOX', $query);
Horde_Imap_Client_Base::search()
возвращает массив, который содержит результаты поиска (идентификаторы сообщений из найденных писем) и некоторые дополнительные данные.
Не полностью отвечаю на ваши вопросы. Так я ищу сообщения, которые не были удалены.
$client = new Horde_Imap_Client_Socket(array(
'username' => $user,
'password' => $pass,
'hostspec' => $server,
'secure' => 'ssl'
));
$query = new Horde_Imap_Client_Search_Query();
$query->flag(Horde_Imap_Client::FLAG_DELETED, false);
$results = $client->search('INBOX', $query);
foreach($results['match'] as $match) {
$muid = new Horde_Imap_Client_Ids($match);
$fetchQuery = new Horde_Imap_Client_Fetch_Query();
$fetchQuery->imapDate();
$list = $client->fetch('INBOX', $fetchQuery, array(
'ids' => $muid
));
var_dump($list);
}
$results = $client->search($mailbox, $searchquery, array('sort' => array($sSortDir, $sSort)));
$uids = $results['match'];
for ($i = $i_start; $i < $i_to; $i++)
{
$muid = new Horde_Imap_Client_Ids($uids->ids[$i]);
$list = $client->fetch($mailbox, $query, array(
'ids' => $muid
));
$flags = $list->first()->getFlags();
$part = $list->first()->getStructure();
$map = $part->ContentTypeMap();
$envelope = $list->first()->getEnvelope();
}