我有 PHP脚本,可以从邮箱中获取邮件。我使用 imap_search 函数:
$emails = imap_search($inbox, "SINCE \"$since_date\"");
我可以将限价应用于imap_search();
以上的功能,还可以在$ since_date
装置
$since_date=24 march 2014 12:33:14
这样。
答案 0 :(得分:1)
由于imap_search
只允许您按日期进行搜索,为了进一步缩短时间的结果,您可以循环显示过去2天的电子邮件,检查他们的标题。这是一个例子:
// Get a count of all the emails sent in the last 24hrs
// (perhaps to see if you've reached your gmail sending limit)
$targetCount = 0;
// Get last 2 days of emails in the SENT box
$date = date("j-M-Y", strtotime("-1 day"));
$imap = imap_open('{imap.gmail.com:993/imap/ssl}[Gmail]/Sent Mail', 'your-email-address-here', 'your-password-here');
$emails = imap_search($imap, 'SINCE ' . $date);
if($emails) {
$count = count($emails);
// Loop through each email and only count those within the 24 hour period
for($i = 0; $i < $count; $i++){
$header = imap_header($imap, $emails[$i]);
// Note: I'm using the package Carbon (to work with dates easier)
$date = Carbon::createFromTimeStamp(strtotime(substr($header->date, 0, -6)),'America/Chicago');
$date->addHours(5); // <-- Adjust for your timezone
if($date->diffInHours(Carbon::now('America/Chicago'), false) <= 24){
$targetCount++;
}
}
}
imap_close($imap);
echo $targetCount;
我之所以回归2天是因为Gmail的时区可能与您的服务器不同。如果您想避免在额外的一天中进行循环,可以在Gmail的设置中更改您的时区。
答案 1 :(得分:0)
这两个问题的答案都不是,我很害怕。但是,如果您的服务器具有WITHIN extension,则可以按小时搜索。几乎没有任何服务器。