PHP显示未读邮件计数

mic*_*ele 1 php email pop3 imap

我正在使用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";
}
Run Code Online (Sandbox Code Playgroud)

如果我做

$overview=imap_fetch_overview($mbox,"1:$msgCount",0);
Run Code Online (Sandbox Code Playgroud)

脚本加载到无限时间.

imap_search UNSEEN解决方案不好,因为pop3不使用此标志.那怎么办??????? 非常感谢.

Tar*_*rik 6

有两种方法可以遵循:

1.循环播放消息

$count = imap_num_msg($connection);
for($msgno = 1; $msgno <= $count; $msgno++) {

    $headers = imap_headerinfo($connection, $msgno);
    if($headers->Unseen == 'U') {
       ... do something ... 
    }

}
Run Code Online (Sandbox Code Playgroud)

2.使用imap_search

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

$result = imap_search($connection, 'UNSEEN');
Run Code Online (Sandbox Code Playgroud)

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

$result = imap_search($connection, 'UNSEEN FROM "me@example.com"');
Run Code Online (Sandbox Code Playgroud)

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

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