我正在使用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不使用此标志。 那怎么办??????? 非常感谢。
答案 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手册页的标准部分
答案 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;
}