我想连接到IMAP服务器并查找发送到abc@server.tld
的所有电子邮件。我试过了:
$mbox = imap_open("{imap.server.tld/norsh}", "imap@server.tld", "5ecure3");
$result = imap_search($mbox, "TO \"abc@server.tld\"", SE_UID);
但是这也列出了发送的电子邮件,例如到123abc@server.tld
。在某种程度上可以搜索完全匹配吗?
答案 0 :(得分:2)
简短的回答:你做不到。我在RFC 2060 - Internet Message Access Protocol - Version 4rev1中没有找到任何可以说它可以完成的内容。
但是,有一种解决方法。首先获取包含abc@server.tld
的所有电子邮件,然后迭代结果并仅选择完全匹配。
$searchEmail = "abc@server.tld";
$emails = imap_search($mbox, "TO $searchEmail");
$exactMatches = array();
foreach ($emails as $email) {
// get email headers
$info = imap_headerinfo($mbox, $email);
// fetch all emails in the TO: header
$toAddresses = array();
foreach ($info->to as $to) {
$toAddresses[] = $to->mailbox . '@' . $to->host;
}
// is there a match?
if (in_array($searchEmail, $toAddresses)) {
$exactMatches[] = $email;
}
}
现在,您在abc@server.tld
$exactMatches
匹配的所有电子邮件