PHP - imap 计数未见过的电子邮件总是给出“1”作为结果


PHP - imap count unseen emails gives always '1' as result

尝试计算我的邮箱中看不见的电子邮件,我拥有的脚本会进行计数,但是,当没有看不见的电子邮件时,结果始终是 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

根据文档imap_search()返回一个数组,而不是一个数字。

因此,您需要:

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

好的,对不起,小姐自己解释了文档。所以这里有一个关于你的问题的解释:该函数确实返回了一个数组,一个数组包含你移交的每个搜索属性一个结果(计数)。由于您只指定单个属性("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";
}