PHP Отображение количества непрочитанных писем - PullRequest
1 голос
/ 15 июля 2011

Я использую класс 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);

скрипт загружается на бесконечность времени.не используйте этот флаг.Так как я могу сделать ??????Большое спасибо.

Ответы [ 2 ]

6 голосов
/ 15 июля 2011

Есть два способа следовать:

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/

3 голосов
/ 15 июля 2011

Это было непросто в Google: php imap unread

Первый результат:

Естьфлаг UNSEEN, который вы можете использовать для поиска непрочитанных писем.Вы бы вызвали функцию imap_search с флагом UNSEEN следующим образом: view sourceprint?

 $result = imap_search($connection, 'UNSEEN');

Если вам нужно объединить это с дополнительными флагами поиска, например, для поиска сообщений от меня @example.com, вы могли бы сделать это: просмотреть исходный текст?

 $result = imap_search($connection, 'UNSEEN FROM "me@example.com"');

Полный список доступных флагов приведен в разделе критериев на странице руководства imap_search на веб-сайте PHP.(www.php.net/imap_search)

Edit Первоначально я прочитал это как 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;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...