2015-09-28 2 views
1

Хорошо, не повезло с почтовым клиентом ZETA, поэтому теперь я попытался установить библиотеку клиентов Horde IMAP. Мне удалось войти в мою учетную запись и выполнить поиск по электронной почте, а также получить результаты, но я не знаю, как получить данные электронной почты, и документация не очень помогает: |HORDE Imap PHP client - как получать сообщения

Я предполагаю, что мне нужно будет использовать метод Horde_Imap_Client_Base::fetch() для получения некоторых сообщений электронной почты, которые принимают два параметра, имя почтового ящика и объект Horde_Imap_Client_Fetch_Query, но я не знаю, как получить этот второй объект: |

Должен ли этот объект быть возвращен одной из базовых функций или я должен построить этот объект с параметрами запроса, которые я хочу? Если второй, как мне перестроить мой поисковый запрос в объекте запроса выборки из приведенного ниже примера?

Вот как я ищу свою почту для письма от конкретного контакта на определенный день:

$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); 

The Horde_Imap_Client_Base::search() возвращает массив, который содержит результаты поиска (сообщение корочки поиска писем) , и некоторые дополнительные данные.

ответ

1
$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(); 
} 
1

Не полностью отвечает на ваши вопросы. Вот как я ищу сообщения, которые не удаляются.

$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); 
    } 
Смежные вопросы