HORDE Imap PHP客户端 - 如何获取消息

时间:2015-09-28 13:25:13

标签: php email horde

好的,ZETA电子邮件客户端没用,所以现在我尝试安装Horde IMAP Client库。我已经设法登录我的帐户,并搜索电子邮件,也找回了结果,但我不知道如何获取电子邮件数据,文档并没有真正帮助:|

我认为我必须使用Horde_Imap_Client_Base::fetch()方法来获取一些电子邮件,它接受两个参数,邮箱名称和Horde_Imap_Client_Fetch_Query对象,但我不知道如何得到第二个对象:|

是否应该通过其中一个Base函数返回此对象,还是应该使用我想要的查询参数构建此对象?如果是第二个,我应该如何从以下示例中的fetch查询对象中重建我的搜索查询?

以下是我搜索INBOX的方式,以及特定日期特定联系人的邮件:

 $client = new Horde_Imap_Client_Socket(array(
    'username' => 'my.email@address.com',
    'password' => 'xxxxxxxxxx',
    'hostspec' => 'my.mail.server',
    'port' => '143',
    'debug' => '/tmp/foo',
));
$query = new Horde_Imap_Client_Fetch_Query();
$query->dateSearch(new Date(), Horde_Imap_Client_Search_Query::DATE_ON);
$query->headerText("from","mycontact@contact.email");
$results = $client->search('INBOX', $query);

Horde_Imap_Client_Base::search()返回一个数组,其中包含搜索结果(搜索到的电子邮件的邮件ID)以及一些其他数据。

2 个答案:

答案 0 :(得分:2)

没有完全回答你的问题。这是我搜索未删除的邮件的方式。

  $client = new Horde_Imap_Client_Socket(array(
      'username' => $user,
      'password' => $pass,
      'hostspec' => $server,
      'secure' => 'ssl'
  ));

  $query = new Horde_Imap_Client_Search_Query();
  $query->flag(Horde_Imap_Client::FLAG_DELETED, false);
  $results = $client->search('INBOX', $query);

  foreach($results['match'] as $match) {
    $muid = new Horde_Imap_Client_Ids($match);
    $fetchQuery = new Horde_Imap_Client_Fetch_Query();
    $fetchQuery->imapDate();
    $list = $client->fetch('INBOX', $fetchQuery, array(
        'ids' => $muid
    ));
    var_dump($list);
  }

答案 1 :(得分:1)

$results = $client->search($mailbox, $searchquery, array('sort' => array($sSortDir, $sSort)));
$uids = $results['match'];
for ($i = $i_start; $i < $i_to; $i++) 
{
    $muid = new Horde_Imap_Client_Ids($uids->ids[$i]);

    $list = $client->fetch($mailbox, $query, array(
        'ids' => $muid
    ));
    $flags = $list->first()->getFlags();
    $part = $list->first()->getStructure();
    $map = $part->ContentTypeMap();
    $envelope = $list->first()->getEnvelope();
}