imap_sort限制结果的数量?

时间:2010-11-18 16:11:08

标签: php email imap email-integration

我正在使用PHP与IMAP。我需要从文件夹中检索20个最新的电子邮件。我使用imap_sort按日期排序,但问题是对于包含700多封电子邮件的大型文件夹需要很长时间。

有没有办法可以使用PHP IMAP按日期对邮件进行排序,只带最新的20封电子邮件?

也许使用imap_search?

这是我的代码:

$start_from  = params::cleanDefault($_GET, 'start_from', 0);
$limit       = params::cleanDefault($_GET, 'limit', 20);
$sort_by     = params::cleanDefault($_GET, 'sort_by', 'SORTARRIVAL');

$emails = imap_sort($mbox, $sort_by, 1, SE_NOPREFETCH);
$emails = array_slice($emails, $start_from, $limit); 

感谢。

1 个答案:

答案 0 :(得分:1)

没有直接的方法可以做到。

您已经通过sorting on SORTARRIVAL instead of SORTDATE最小化了PHP imap_*函数下的c-client库提取的数据。而且,虽然有an IMAP extension允许调用者请求SORT结果的子集(例如前20个命中),但很少有IMAP服务器支持它,PHP无法使用它。

您可以尝试使用imap_search并询问自1天前到达的消息。如果没有足够的点击量,您可以重新搜索自2天前到达的消息。等等。但是这可能会让代码变得混乱,并且它可能不会比你已经做的更快。