PHP显示未读邮件计数

时间:2011-07-15 13:19:05

标签: php email imap pop3

我正在使用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不使用此标志。 那怎么办??????? 非常感谢。

2 个答案:

答案 0 :(得分:6)

您可以采用以下两种方式:

<强> 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的标志,您可以使用它来搜索未读的电子邮件。您可以使用UNSEEN标志调用imap_search函数,如下所示:

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

如果您需要将其与更多搜索标记相结合,例如搜索来自me@example.com的消息,您可以这样做:

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

有关可用标志的完整列表,请参阅PHP网站(www.php.net/imap_search)上imap_search手册页的标准部分

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

答案 1 :(得分:3)

这对谷歌来说非常艰难:php imap unread

第一个结果:

  

有一个名为UNSEEN的标志,您可以使用它来搜索未读的电子邮件。您可以使用UNSEEN标志调用imap_search函数,如下所示:   查看sourceprint?

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

如果您需要将其与更多搜索标记相结合,例如搜索来自me@example.com的消息,您可以执行以下操作:   查看sourceprint?

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

有关可用标志的完整列表,请参阅PHP网站(www.php.net/imap_search)上imap_search手册页的标准部分

编辑我最初读过这个IMAP。 #fail。

Google:php pop3 unread

第二个链接:

 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;
 }