如何使用 Zend_Mail_Protocol_Imap 或 Zend_Mail_Storage_Imap 批量检索电子邮件

Posted

技术标签:

【中文标题】如何使用 Zend_Mail_Protocol_Imap 或 Zend_Mail_Storage_Imap 批量检索电子邮件【英文标题】:How to do batch retreival of email using Zend_Mail_Protocol_Imap or Zend_Mail_Storage_Imap 【发布时间】:2013-01-12 13:57:35 【问题描述】:

我正在使用 Zend_Mail_Storage_Imap 访问电子邮件,但使用以下代码

$storage = new Zend_Mail_Storage_Imap($imap);
$allIds = $storage->getUniqueId(); // i get all key value pair of meesageid and uniqueid
foreach ($allIds as $k => $v) 

    echo '<li>' . htmlentities($storage->getMessage($v)->subject) . "</li>\n";

我的问题是它会循环并一次收到一封电子邮件,这很慢,就像每秒收到两封电子邮件一样非常慢。我正在寻找这些邮件的批量检索方法,但找不到任何 .有人做过吗

【问题讨论】:

这对您有帮助吗?您可以接受答案还是提供自己的答案? 【参考方案1】:

终于明白了。

其中 $imap 是 Zend_Mail_Protocol_Imap 的实例化和连接版本:

    $imap-&gt;select(); // or $imap-&gt;select('FOLDER_NAME');

    $imap-&gt;requestAndResponse('SEARCH UNSEEN', $imap-&gt;escapeString('*'))//all unread email ids

    $imap-&gt;requestAndResponse('SEARCH UNSEEN FROM "someEmail@gmail.com"', $imap-&gt;escapeString('*'))//all unread email id's from someEmail@gmail.com

    $imap-&gt;requestAndResponse('SEARCH UNSEEN SUBJECT "test" FROM "someEmail@gmail.com"', $imap-&gt;escapeString('*'))//all unread email id's from someEmail@gmail.com with the subject of test

*您必须先执行上述 #1,否则您会得到类似于:“TAG# BAD SEARCH not allowed now。”

以上所有将返回一个类似于以下数组的数组:

//C: TAG3 SEARCH UNSEEN
//S: * SEARCH 321 323 362 371 377 384 386 387 388 389 416 417 418 
//S: TAG3 OK SEARCH completed (Success) 
//The above lines are in the format of RFC 1730 to show what was actually sent/received.

array (size=1)
  0 => 
    array (size=14)
      0 => string 'SEARCH' (length=6)
      1 => string '321' (length=3)
      2 => string '323' (length=3)
      3 => string '362' (length=3)
      4 => string '371' (length=3)
      5 => string '377' (length=3)
      6 => string '384' (length=3)
      7 => string '386' (length=3)
      8 => string '387' (length=3)
      9 => string '388' (length=3)
      10 => string '389' (length=3)
      11 => string '416' (length=3)
      12 => string '417' (length=3)
      13 => string '418' (length=3)

【讨论】:

以上是关于如何使用 Zend_Mail_Protocol_Imap 或 Zend_Mail_Storage_Imap 批量检索电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?

WSARecv 如何使用 lpOverlapped?如何手动发出事件信号?