按日期进行 imap_search 的 PHP 方法

标签 php gmail imap

例如,我试图仅显示最近 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/

相关文章:

php - 向内连接的 Laravel 添加分页

email - 优先级 : bulk header on e-mail messages 的作用是什么

GmailMessage 转 PDF

C++ LibcURL IMAP 获取主题行的变量是什么?

php - LIMIT 使用偏移误差

php - yajra/laravel-datatables 搜索不适用于 laravel 5.4

ruby-on-rails - 如何使用 ActionMailer 在 IMAP "Sent"框中保存外发电子邮件的副本?

python - imap_tools - 在 python 中下载附件

php - 如何用循环更新sql中的一行?

asp.net - 防止通知电子邮件中的 Gmail 线程对话