【问题标题】:PHP Displaying unread mail countPHP 显示未读邮件数
【发布时间】:2011-10-06 03:51:11
【问题描述】:

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

【问题讨论】:

标签: php email imap pop3


【解决方案1】:

有两种方法可以遵循:

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/

【讨论】:

  • 但是在 imap_search 之后如何打印邮件?
  • 因为 UNSEEN 意味着 UNREADED?
【解决方案2】:

这在 Google 上是个难题:php imap unread

第一个结果:

有一个名为 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 手册页的条件部分

编辑我最初是作为 IMAP 阅读的。 #失败。

谷歌: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;
 }

【讨论】:

  • 不,这不是一个好的解决方案......脚本仍在加载,结果是:超过了 30 秒的最大执行时间
  • 哪种解决方案?第一个?第二?两者都有?
  • $result = imap_search($connection, 'UNSEEN');如何打印邮件?
  • 这个问题是关于未读计数 :) 如果您在阅读/打印电子邮件方面需要帮助,请在此处选择一个答案并打开一个新问题...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
相关资源
最近更新 更多