当我在GMail收件箱上运行一个非常简单的imap_search
时,搜索返回的邮件少于应有的数量。
这是具有GMail帐户的任何人都可以运行的脚本。
$host = '{imap.gmail.com:993/imap/ssl}';
$user = 'foo';
$pass = 'bar';
$imapStream = imap_open($host,$user,$pass) or die(imap_last_error());
$messages = imap_search($imapStream,"ALL");
echo count($messages);
imap_close($imapStream);
这将返回39条消息。但是,我的收件箱中有100封邮件,有些捆绑在对话中,有些则从另一个帐户(SquirrelMail)转发。
任何人都可以复制这些结果,和/或告诉我发生了什么事吗?
我尝试过的其他服务器字符串均返回相同的结果:
{imap.gmail.com:993/imap/ssl/novalidate-cert}
{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX
{imap.gmail.com:993/imap/ssl}INBOX
GMail的IMAP功能支持:http://mail.google.com/support/bin/answer.py?hl=en&answer=78761
最佳答案
大量脱发后,我找到了答案。这是一个误导性的UI。
默认情况下,GMail将一个人的邮件分组为“对话”。这些对话可以包括存档的消息。
因此,例如,鲍勃的收件箱看起来像有4条 session ,共25条消息,显然应该返回100条收件箱消息。实际上,其中有60条消息位于归档文件中(而不是收件箱中),因此imap_search()
返回40
。这些消息被神奇地从存档中拉出,并放入收件箱对话中。
在“设置”->“常规”菜单中,您可以切换对话 View ,这会将所有那些顽皮的已归档邮件放回它们所属的位置,并显示真实的收件箱 View 。