我的需要: 我希望在我的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,它也在运行。
答案 0 :(得分:3)
如果您是通过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);
这将为您提供未读邮件计数。
答案 1 :(得分:1)
$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 =总消息,最近 =这不是未读数但是最近的数据)
答案 2 :(得分:0)
尝试将if (!$mbox)
替换为if ($mbox === FALSE)
您应该进行特定的类型检查,以这种方式测试句柄是不好的做法。
另外,请尝试通过gmail.com登录您的帐户。您可能有太多无效尝试,Gmail希望您先输入验证码,但这不能通过IMAP完成。