我只想显示过去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时间内收到的电子邮件。
答案 0 :(得分:4)
由于PHP使用不允许按时间搜索的IMAP2搜索工具,这可能是唯一的解决方案。或者您可以查看RECENT标志,但仍需要循环播放当天的所有消息。
答案 1 :(得分:-2)
我使用上面的搜索:
$mailbox = imap_open($str_conexao, $login, $senha) or die("Can't connect: " . imap_last_error());
echo $since = date("D, d M Y", strtotime("-1 days"));
$search = imap_search($mailbox, 'FROM "somebody@exemple.com" SINCE "'.$since.' 00:00:00 -0700 (PDT)"', SE_UID);
echo "<PRE>";
var_dump($search);
echo "</PRE>";
foreach ($search as $msg_id)
{
//Pega informações da mensagem
$overview = imap_fetch_overview($mailbox, $msg_id, FT_UID);
echo "<PRE>";
var_dump($overview);
echo "</PRE>";
}