当我imap_search在我的GMail收件箱上运行非常简单时,搜索返回的消息少于应有的消息.
以下是任何拥有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);
Run Code Online (Sandbox Code Playgroud)
这将返回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
Run Code Online (Sandbox Code Playgroud)
GMail的IMAP功能支持:http://mail.google.com/support/bin/answer.py?hl = zh-CN&answer = 78761
在大量脱发后,我找到了答案.这是一个误导性的用户界面.
GMail默认将一条消息分组为"对话".这些对话可以包括存档的消息.
因此,例如,Bob的收件箱看起来有25个消息的4个对话,这显然会返回100个收件箱消息.实际上,60条消息都在存档(不是收件箱)中,因此imap_search()返回40.这些消息被神奇地从存档中拉出并放入收件箱对话中.
在" 设置" - >"常规"菜单中,您可以切换会话视图,这会将所有这些顽皮的存档消息放回原来的位置,并显示您的真实收件箱视图.