2016-02-26 36 views
1

我在为imap_fetch_overview的序列挣扎。邮件1是最旧的还是最新的邮件?如果新邮件到达,它是否会得到更高的ID?Imap_fetch_overview和最新/最旧的邮件

解决方案:

$check = imap_check($connection); 
    $result = array(); 

    if($check->Nmsgs > 0){ 

     $sort = imap_sort($connection, SORTARRIVAL, 0); 

     $msgs = ''; 

     $i = 1; 

     foreach($sort as $id) 
     { 
      if($i > 200) break; 
      $msgs = $msgs . $id . ','; 
      $i++; 
     } 

     $response = imap_fetch_overview($connection, rtrim($msgs,',')); 
     foreach ($response as $msg){ 
      $result[] = $msg; 
     } 
    } 
+0

不确定它们是否已排序,请参阅文档中的'imap_sort()'和相关信息。 – Dave

+0

因此,基于imap_sort我建立一个字符串,我传递给imap_fetch_overview? –

+0

您的编辑可能会返回一堆最近的内容,但不一定是在该回报中的顺序。这可能是性能折衷。请参阅http://php.net/manual/en/function.imap-fetch-overview.php#88235 – Dave

回答

1

对于问题的第二部分,

看到这个RFC

每封邮件都有不同的ID,但没有更高或更低。这只是随意选择,但独一无二。

对于你的问题的第一部分,

如果你想找到最老或最新的邮件,你必须使用date方法,如:

$overview = imap_fetch_overview($connection,$email_number,0); 
echo $overview[0]->date; 

然后用返回的日期比较这邮件。

相关问题