PHP Displaying unread mail count

前端 未结 2 524
广开言路
广开言路 2020-12-05 17:11

I am using php imap class. In my box I have a lot of mail, but with this script I would retrieve only the unreaded mail. How can I do it?

if ($mbox=imap_open         


        
相关标签:
2条回答
  • 2020-12-05 17:15

    This was a tough one on Google: php imap unread

    The first result:

    • http://www.electrictoolbox.com/php-imap-unread-messages/

    There's a flag called UNSEEN which you can use to search for the unread emails. You would call the imap_search function with the UNSEEN flag like so: view sourceprint?

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

    If you need to combine this with more search flags, for example searching for messages from me@example.com, you could do this: view sourceprint?

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

    For a complete list of the available flags, refer to the criteria section of the imap_search manual page on the PHP website (www.php.net/imap_search)

    Edit I had read this originally as IMAP. #fail.

    Google: php pop3 unread

    2nd link:

     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;
     }
    
    0 讨论(0)
  • 2020-12-05 17:29

    There is two way you can follow:

    1. Looping through the messages

    $count = imap_num_msg($connection);
    for($msgno = 1; $msgno <= $count; $msgno++) {
    
        $headers = imap_headerinfo($connection, $msgno);
        if($headers->Unseen == 'U') {
           ... do something ... 
        }
    
    }
    

    2. Using imap_search

    There's a flag called UNSEEN which you can use to search for the unread emails. You would call the imap_search function with the UNSEEN flag like so:

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

    If you need to combine this with more search flags, for example searching for messages from me@example.com, you could do this:

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

    For a complete list of the available flags, refer to the criteria section of the imap_search manual page on the PHP website (www.php.net/imap_search)

    Source: http://www.electrictoolbox.com/php-imap-unread-messages/

    0 讨论(0)
提交回复
热议问题