PHP - imap计数看不见的电子邮件总是提供' 1'结果

时间:2015-06-14 10:21:33

标签: php html email count imap

尝试计算我的电子邮箱中看不见的电子邮件,但是我编写的脚本会进行计数,但是当没有看不见的电子邮件时,结果总是为1且没有0.任何想法为什么?

这是我到目前为止的代码。

PHP:

    $hostname = '{imap.example.com:993/imap/ssl}INBOX';
    $username = 'myemail@example.co.uk';
    $password = 'mypass';
    $imap = imap_open($hostname, $username, $password) or die("imap connection error");
    $result = imap_search($imap, 'UNSEEN');
    $new_inbox_msg = count($result);
    echo $new_inbox_msg

1 个答案:

答案 0 :(得分:3)

根据{{​​3}},

imap_search()会返回数组,而不是数字。

所以你需要:

$result = imap_search($imap, 'UNSEEN');
echo count($result);

好的,对不起,小姐自己解释了文档。所以这里解释你的问题:函数确实返回一个数组,但是一个数组,每个搜索属性保存一个结果(count)。由于您只指定了一个属性('UNSEEN'),因此总是获取数组中的单个元素。 元素值是与该搜索条件匹配的邮件数。

因此正确的用法应该是:

$result = imap_search($imap, 'UNSEEN');
if (is_array($result) && isset($result[0])) {
    echo count($result[0]);
} else {
    echo "Failed to query number of messages\n";
}