imap_num_msg 使用 pop 协议返回的收件箱中的邮件数量少于实际邮件数量

imap_num_msg returning less count than actual emails in the inbox with pop protocol

我正在尝试使用 gmail 的电子邮件作为退回地址来处理 phplist 中的退回电子邮件。当我尝试处理退回时,我陷入了与 Post - There are 250 bounces to process 中提到的类似场景。

Phplist 只能从我的 gmail 帐户中提取 250 封电子邮件。在进一步调查 phplists 的代码时,我发现这行代码似乎是罪魁祸首。

$num = imap_num_msg($link); // 只得到 250

的计数

跳过更多细节。我写了几行代码来使用 imappop 获取邮件计数。 pop 版本 returns 计数错误,而 imap 版本返回的计数正确

$username = 'bounceemail@mydomain.com';
$password = 'password';

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$inbox = imap_open($hostname,$username,$password);
$num = imap_num_msg($inbox);
echo $num; // prints 65,051 ( correct one)

$hostname = '{pop.gmail.com:995/pop3/ssl}INBOX';
$inbox = imap_open($hostname,$username,$password);
$num = imap_num_msg($inbox);
echo $num; // prints 250 as count ( wrong one)

我实际上需要知道为什么使用不同协议的同一封电子邮件的计数不同。此外,我在 Internet 上找到的所有与 phplist 退回处理相关的帮助都明确要求使用 {pop.gmail.com:995/pop3/ssl}INBOX 版本。所以我不能冒险使用其他版本来处理退回邮件。

Gmail 有一个非标准的 POP 实现,一次只公开 250-300 封邮件,直到您下载并删除它们。或者,如果您使用 recent:username 作为您的用户名,它将改为显示最近 30 天。

无论哪种方式,如果您想完全访问您的 Gmail 帐户,您需要使用 IMAP。