Я использую класс php imap. В моей коробке у меня много писем, но с этим скриптом я бы получил только непрочитанную почту. Как мне это сделать?
if ($mbox=imap_open( "{" . $mailserver . ":" . $port . "}INBOX", $user, $pass )) { echo "Connected\n"; } else { exit ("Can't connect: " . imap_last_error() ."\n"); echo "FAIL!\n"; }; if ($hdr = imap_check($mbox)) { $msgCount = $hdr->Nmsgs; echo "Ci sono ".$msgCount." mail"; } else { echo "Failed to get mail"; }
Если я сделаю
$overview=imap_fetch_overview($mbox,"1:$msgCount",0);
загрузка скрипта до бесконечности.
Решение imap_search UNSEEN не подходит, потому что pop3 не использует этот флаг. Так как я могу сделать ?????? Большое спасибо.
Существует два способа:
1. Прохождение через сообщения
$count = imap_num_msg($connection); for($msgno = 1; $msgno <= $count; $msgno++) { $headers = imap_headerinfo($connection, $msgno); if($headers->Unseen == 'U') { ... do something ... } }
2. Использование imap_search
Есть флаг под названием UNSEEN, который вы можете использовать для поиска непрочитанных писем. Вы бы назвали функцию imap_search флагом UNSEEN следующим образом:
$result = imap_search($connection, 'UNSEEN');
Если вам нужно объединить это с большим количеством флагов поиска, например, для поиска сообщений с me@example.com, вы можете сделать это:
$result = imap_search($connection, 'UNSEEN FROM "me@example.com"');
Полный список доступных флагов см. В разделе критериев страницы руководства imap_search на веб-сайте PHP (www.php.net/imap_search).
Источник: http://www.electrictoolbox.com/php-imap-unread-messages/
Это было сложно для Google: php imap unread
Первый результат:
Есть флаг под названием UNSEEN, который вы можете использовать для поиска непрочитанных писем. Вы бы назвали функцию imap_search флагом UNSEEN следующим образом: view sourceprint?
$result = imap_search($connection, 'UNSEEN');
Если вам нужно объединить это с большим количеством флагов поиска, например, для поиска сообщений с me@example.com, вы можете сделать это: просмотреть исходный текст?
$result = imap_search($connection, 'UNSEEN FROM "me@example.com"');
Полный список доступных флагов см. В разделе критериев страницы руководства imap_search на веб-сайте PHP (www.php.net/imap_search).
Редактировать Я прочитал это первоначально как IMAP. #потерпеть неудачу.
Google: php pop3 unread
2-я ссылка:
function CountUnreadMails($host, $login, $passwd) { $mbox = imap_open("{{$host}/pop3:110}", $login, $passwd); $count = 0; if (!$mbox) { echo "Error"; } else { $headers = imap_headers($mbox); foreach ($headers as $mail) { $flags = substr($mail, 0, 4); $isunr = (strpos($flags, "U") !== false); if ($isunr) $count++; } } imap_close($mbox); return $count; }