例如,我试图仅显示最近 5 分钟内收到的电子邮件:
$since = date('d-M-Y G\:i', time() - 300); // current time - 5 min
$mb = imap_search ($m_mail, 'UNSEEN SINCE ' . $since . '');
有没有简单的方法来做到这一点?我找到了一种方法:获取当天(例如:2010 年 5 月 9 日)所有未看到的邮件,循环浏览这些电子邮件,然后检查是否有在过去 X 分钟内发送的邮件。如果是,则回显它(使用 imap_headerinfo->udate )。
但是,当我查看 gmail.com 时,一封电子邮件是在 17:08 收到的,而在我的服务器上,这封电子邮件似乎是在 14:08 收到的
更新:我解决了在 gmail.com 中显示电子邮件发送时间为 17:04 而在我的应用程序中显示为 14:04 的问题。我将全局服务器时区更改为 GMT +0 并设置了应用程序时区。现在它可以正确显示时间,但我仍然不知道如何以更短的方式获取最近 X 时间内收到的电子邮件。
最佳答案
由于 PHP 使用不允许按时间搜索的 IMAP2 搜索工具,这可能是唯一的解决方案。或者您可以查看 RECENT 标志,但这仍然需要遍历当天的所有消息。
关于按日期进行 imap_search 的 PHP 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2798206/