无法使用IMAP搜索

时间:2014-05-07 20:37:41

标签: php imap

我的电子邮件ID的电子邮件主题为“=?UTF-8?Q?= e2 = 99 = a3?=样式=?UTF-8?Q?= e2 = 99 = a3?=”现在我想要使用imap_search搜索具有此主题行的电子邮件。但是我收到了一个错误 - :

Notice: Unknown: Unknown search criterion: STYLES (errflg=2) in Unknown on line 0

以下是我正在使用的搜索代码:

    $ToSearch=trim("=?UTF-8?Q?=e2=99=a3?= Styles to Freshen Up Your Home =?UTF-8?Q?=e2=99=a3?=");
        $unreadEmails= imap_search($loginToInbox,'SUBJECT  '.$ToSearch.' SINCE '.$dateToSearch.'');
var_dump($unreadEmails);

如何使用主题行搜索电子邮件。

2 个答案:

答案 0 :(得分:1)

对我而言,这似乎很清楚:它绊倒了"样式"。这是因为它有一个空格,所以它认为应该有一个新的IMAP关键字。请尝试将其括在引号中:

$unreadEmails = imap_search($loginToInbox,'SUBJECT "'.$ToSearch.'" SINCE '.$dateToSearch);

您还必须小心$dateToSearch - 您可能也必须将其括在引号中,并确保其格式为服务器期望(最有可能RFC2822 - 请参阅第3.3节日期和时间规范。有关它应该是什么样子的示例,请参阅this other question

答案 1 :(得分:0)

代码非常危险 - 它包含" IMAP命令注入",类似于SQL注入,如果您将用户控制的数据直接传递到SQL数据库中,则会获得。

在将用户提供的数据提供给IMAP连接之前,您必须对其进行清理。阅读RFC3501,了解字符串的传输方式,了解PHP imap_search是否可以免费为您做任何事情(当涉及文字时,您不想从文字中处理它们)应用程序代码),并确保只将已清理的数据传递给服务器。

当前版本的代码容易受到严重错误的影响;攻击者可以删除所有电子邮件。