搜索电子邮件正文而无需下载 - IMAP

时间:2014-12-09 09:24:48

标签: php email imap horde

我可以通过IMAP 搜索所有电子邮件而不 下载邮件吗?

RFC 3501 IMAP第4版修订版1(IMAP4rev1)的 6.4.4 中指定:

  

SEARCH命令在邮箱中搜索匹配的邮件         给定的搜索标准。搜索条件由一个组成         或更多搜索键。来自服务器的未标记的SEARCH响应         包含对应的消息序列号列表         那些符合搜索条件的邮件。

     

定义的搜索键如下。请参阅正式         语法部分用于精确的句法定义         参数

     

BODY            在邮件正文中包含指定字符串的邮件            消息。

...所以我想知道我是否可以在没有先下载的情况下搜索电子邮件正文?

1 个答案:

答案 0 :(得分:1)

函数imap_search()可以帮助您,但请记住,IMAP服务器需要支持它才能工作。

<强>更新

这是一个小程序:

error_reporting(E_ALL);
ini_set('display_errors', '1');

$user = '';         // put your Gmail email address here (including '@gmail.com');
$pass = '';         // put your Gmail password here
$host = 'imap.gmail.com:993';      // Put your IMAP server here with portGmail
$keyword = '';      // put the word you want to find


$mailbox = sprintf('{%s/imap/ssl/user=%s}INBOX', $host, $user);
$query = sprintf('BODY "%s"', $keyword);

$mbox  = imap_open($mailbox, $user, $pass, OP_READONLY);
if ($mbox) {
    $list = imap_search($mbox, $query, SE_UID);
    var_dump($list);
    imap_close($mbox);
}

它可能适用于您的设置,也可能不适用。它在我公司的邮件服务器上有一个帐户,对我有用。它无法连接到我的常规电子邮件客户端正常工作的另一台服务器上。

使用Gmail同时(!!)工作失败了。不要问!