4

我正在使用 imap_search 从我的收件箱中获取消息列表。我只想要从该地址发送的电子邮件,比如说“somemail@gmail.com”。

我正在这样做:

$headers = imap_search($box,'FROM "somemail@gmail.com"', SE_UID);

但这需要很长时间,大约 3 分钟,收件箱只有 700 封电子邮件(我的邮箱是 GMAIL)。问题不在于服务器,因为我在 localhost 中安装了 roundcube 并快速加载电子邮件。

我该怎么做才能让它更快?

4

1 回答 1

2

这种方法在过去对我来说比 imap_search 工作得更快:

$stream = imap_open($mailbox,$username,$password);

//imap_num_msg returns the number of messages in the current mailbox, as an integer, so ..
$total_messages = imap_num_msg($stream);

for ($message_number = 0; $message_number < $total_messages; $message_number++)
{
  //get header
  $header = imap_header($stream, $message_number);

  if ($header === NULL)
  continue;

  //check from
  if($header->from == 'somemail@gmail.com')
  {
    // you found one so do something
  }
}
于 2014-02-21T07:13:35.030 回答