3

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

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

<?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,它也在运行。

4

3 回答 3

3

If you're doing it through IMAP why don't you just use:

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

This will give you the unread mail count.

于 2012-04-27T05:38:57.940 回答
1
$inbox = imap_open($hostname,$username,$password,OP_READONLY) or die('无法连接到 Gmail: ' . imap_last_error());
$unread = count (imap_search($inbox, 'UnSeen'));

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

于 2017-09-06T11:24:28.630 回答
0

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

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

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

于 2012-04-27T05:13:30.770 回答