我正在使用imap在php中进行webmail项目。 imap_search函数不适用于多个条件。在单一搜索条件中,它工作正常。 这是我的代码:
$boxes = imap_search($mbox, 'OR SUBJECT "'.$search_keyword.'" BODY "'.$search_keyword.'"', SE_UID);
答案 0 :(得分:1)
感谢您的建议。我已经编写了一些基本条件的代码。现在工作正常。这是我的代码。
//for multiple search criteria starts here for concatenate
$boxes = imap_search($mbox, 'FROM "'.$search_keyword.'"', SE_UID);
//check if first search have mails or not
if( $boxes )
{
if( imap_search($mbox, 'SUBJECT "'.$search_keyword.'"', SE_UID) )
{
$boxes = $boxes + imap_search($mbox, 'SUBJECT "'.$search_keyword.'"', SE_UID);
}
else
{
$boxes = imap_search($mbox, 'SUBJECT "'.$search_keyword.'"', SE_UID);
}
}
答案 1 :(得分:1)
试试这段代码:
$emails = imap_search($inbox, 'TO "'.$email.'" SUBJECT "'.$search_text.'"',E_UID);
答案 2 :(得分:0)
尝试这可能是
$SUBJECT = imap_search($mbox, 'SUBJECT "'.$search_keyword.'"', SE_UID);
$BODY = imap_search($mbox, 'SUBJECT "'.$search_keyword.'"', SE_UID);
$boxes = array_merge($SUBJECT, $BODY);
答案 3 :(得分:0)
我在Windows上使用PHP 5.5.12,并确认" OR"运算符不能使用函数Imap_search()。您需要对服务器进行多次查询才能获得所需的结果。
使用关键字" BODY"也可能值得一提。或" TEXT"搜索电子邮件正文也将使用Imap_search()匹配标题中的内容(例如FROM,TO,SUBJECT)。
答案 4 :(得分:0)
要使用array_merge
或array_intersect
,需要$SUBJECT
和$BODY
来设置临时变量
$I = $SUBJECT;
$J = $BODY;
$boxes = array_merge($I,$J);