【问题标题】:Get unread email count using PHP使用 PHP 获取未读邮件计数
【发布时间】:2012-05-07 20:55:17
【问题描述】:

我的需要: 我想在我的 GMail 帐户(或任何其他电子邮件服务)中获取未读电子邮件的计数,并且在我得到它之后,我需要将它显示在我本地 PHP 服务器上的网页中。所以我需要一种脚本语言,那就是 PHP。但是我尝试了很多示例,但似乎没有一个有效。所以基本上我想要的是一个可以访问我的 GMail 帐户并将未读电子邮件计数返回到网页的 PHP 脚本

我试过这个脚本没有用,它总是在我的网页上显示“错误”。

<?php

function CountUnreadMail($host, $login, $passwd) {
    $mbox = imap_open($host, $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;
}

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'username';
$password = 'password';

$count = CountUnreadMail($hostname, $username, $password);

?>

Chris 的帮助下,我尝试了这个脚本,但我看到的唯一内容是一个空白页。这是我徒劳尝试的另一个脚本:

<?php

function mailCount($host, $login, $passwd) {
    $mbox = imap_open($host, $login, $passwd);
    $mail = '';

    if($mail = imap_check($mbox)) {
        return $mail->Nmsgs;
    }
}

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'phpimap123'; //GMail username
$password = 'phptesting'; //Password

$count = mailCount($hostname, $username, $password);

echo $count;

?

PS:我创建了一个 GMail 帐户,仅用于测试目的

我在 MacBook Air 上运行 Mac OS X Lion。启用并运行 PHP,我也有 MAMP,它也在运行。

【问题讨论】:

    标签: php email count imap


    【解决方案1】:

    尝试将if (!$mbox) 替换为if ($mbox === FALSE)

    您应该进行特定类型检查,以这种方式测试句柄是不好的做法。

    另外,请尝试通过gmail.com 登录您的帐户。可能您尝试的无效尝试次数过多,而 Gmail 要求您先输入验证码,而这无法通过 IMAP 完成。

    【讨论】:

      【解决方案2】:

      如果你是通过 IMAP 做的,为什么不直接使用:

      function mailCount($host, $login, $passwd)
      {
          $mbox = imap_open($host, $login, $passwd);
          $mail = '';
      
          if($mail = imap_check($mbox))
          {
              return $mail->Nmsgs;
          }
      }
      
      $hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
      $username = 'username';
      $password = 'password';
      
      $count = mailCount($hostname, $username, $password);
      

      这将为您提供未读邮件计数。

      【讨论】:

      • 我将把我的帐户详细信息(密码和用户名)放在哪里
      • 这将像您现在一样完成。我在其中添加了 $mbox 变量,就像您拥有它一样。继续,只需在 if() 语句上方输入您的 $mbox 连接代码。如果您愿意,也可以随意将登录凭据添加到函数中。我更喜欢将这些东西构建到类中并将所有数据发送到构造函数中,但无论你喜欢什么都可以:)
      • 你能把最后的代码贴在这里。我真的是 PHP 新手。
      • $mail='' - 我必须在此处添加什么,邮件主机 ({imap.gmail.com:993/imap/ssl}INBOX) 或我的用户名,或者留空
      • 你不需要添加任何东西。 $邮件='';只是启动一个变量来触发 PHP 的 Notice 错误。设置你的 $username 和 $password 就可以了。
      【解决方案3】:
      $inbox = imap_open($hostname,$username,$password,OP_READONLY) or die('Cannot connect to Gmail: ' . imap_last_error());
      $unread = count (imap_search($inbox, 'UnSeen'));

      imap_check 将为您提供:日期、驱动程序、邮箱、Nmsgs、最近Nmsgs = 总消息,最近 = 这不是未读计数,而是最近)

      【讨论】:

        猜你喜欢
        • 2011-11-13
        • 2015-02-08
        • 2017-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多