我如何使用条件或来使用imap_search-PHP imap库搜索电子邮件

我如何使用条件或来使用imap_search-PHP imap库搜索电子邮件,php,email,imap,Php,Email,Imap,我需要在imap_搜索命令中使用OR语句 我发现此库不支持条件或。必须有一种方法,我可以通过电子邮件搜索使用条件或,我将如何做呢?我不知道从哪里开始 我希望能够做到: $boxes = imap_search($connection,'SINCE "08-Mar-2011" AND (BODY "bobby" OR BODY "robert" OR BODY "bob"'); 您的搜索语法错误,因为运算符是前缀而不是中缀。正确的搜索字符串应为“自2011年3月8日起或BODY bobby或BO

我需要在imap_搜索命令中使用OR语句

我发现此库不支持条件或。必须有一种方法,我可以通过电子邮件搜索使用条件或,我将如何做呢?我不知道从哪里开始

我希望能够做到:

$boxes = imap_search($connection,'SINCE "08-Mar-2011" AND (BODY "bobby" OR BODY "robert" OR BODY "bob"');

您的搜索语法错误,因为运算符是前缀而不是中缀。正确的搜索字符串应为“自2011年3月8日起或BODY bobby或BODY robert bobby”

但是,如果PHP根本不支持或在imap_搜索中不支持,并且您的链接表明它们不支持,尽管c客户端支持它已经将近10年了,那么您将不得不在应用程序中执行条件或。跑

$box_bobby  = imap_search($connection, 'SINCE "08-Mar-2011" BODY "bobby"');
$box_robert = imap_search($connection, 'SINCE "08-Mar-2011" BODY "robert"');
$box_bob    = imap_search($connection, 'SINCE "08-Mar-2011" BODY "bob"');

然后合并三个结果集。

您的搜索语法错误,因为运算符是前缀而不是中缀。正确的搜索字符串应为“自2011年3月8日起或BODY bobby或BODY robert bobby”

但是,如果PHP根本不支持或在imap_搜索中不支持,并且您的链接表明它们不支持,尽管c客户端支持它已经将近10年了,那么您将不得不在应用程序中执行条件或。跑

$box_bobby  = imap_search($connection, 'SINCE "08-Mar-2011" BODY "bobby"');
$box_robert = imap_search($connection, 'SINCE "08-Mar-2011" BODY "robert"');
$box_bob    = imap_search($connection, 'SINCE "08-Mar-2011" BODY "bob"');

然后合并三个结果集。

或使用数组合并将结果合并到单个数组中:

//search codes: 1 -> FROM, 2 -> SUBJECT
array_push($filtri, array(1,"no-reply@accounts.google.com"));
array_push($filtri, array(1,"Tophost"));
array_push($filtri, array(2,"promemoria"));

$yesterday = date("Y-m-d", strtotime ("-1 days"));

foreach($filtri as $filtro){
    if ($filtro[0] == 1) $addFiltri = ' FROM "'.$filtro[1].'" ';
    if ($filtro[0] == 2) $addFiltri = ' SUBJECT "'.$filtro[1].'" ';
    $temp = imap_search($inbox,'SINCE "'.$yesterday.'" '.$addFiltri);
    $emails = array_merge($emails , $temp); 

}

或者使用数组合并将结果合并到单个数组中:

//search codes: 1 -> FROM, 2 -> SUBJECT
array_push($filtri, array(1,"no-reply@accounts.google.com"));
array_push($filtri, array(1,"Tophost"));
array_push($filtri, array(2,"promemoria"));

$yesterday = date("Y-m-d", strtotime ("-1 days"));

foreach($filtri as $filtro){
    if ($filtro[0] == 1) $addFiltri = ' FROM "'.$filtro[1].'" ';
    if ($filtro[0] == 2) $addFiltri = ' SUBJECT "'.$filtro[1].'" ';
    $temp = imap_search($inbox,'SINCE "'.$yesterday.'" '.$addFiltri);
    $emails = array_merge($emails , $temp); 

}

您的搜索语法错误,因为操作是前缀而不是中缀。尝试“自2011年3月8日起或BODY bobby或BODY robert bobby”,看看它是否有效…抱歉,无效-我甚至尝试在robert和BODY之间添加最后一个或,但仍然没有结果。您的搜索语法错误,因为操作是前缀而不是中缀。尝试“自2011年3月8日起或BODY bobby或BODY robert bobby”,看看它是否有效…抱歉,没有用-我甚至尝试在robert和BODY之间添加最后一个OR,但仍然没有。前缀/中缀的区别为+1。非PHP应用程序需要这个,好吧,使用IMAP作为shell对我的邮箱进行命令行管理,因为我们中的一些人喜欢shell,从来没有掌握过布尔运算符的用法。+1表示前缀/中缀的区别。非PHP应用程序需要这个,好吧,使用IMAP作为shell对我的邮箱进行命令行管理,因为我们中的一些人喜欢shell,从来没有掌握过布尔运算符。