Могу ли я искать ВСЕ письма по IMAP без загрузки сообщений?
Как указано в 6.4.4 RFC 3501 IMAP версии 4 версии 1 (IMAP4rev1):
Команда SEARCH выполняет поиск в почтовом ящике сообщений, соответствующих заданным критериям поиска. Критерии поиска состоят из одного или нескольких ключей поиска. Немаркированный запрос ПОИСКА с сервера содержит список номеров последовательностей сообщений, соответствующих тем сообщениям, которые соответствуют критериям поиска.
Определенные ключи поиска следующие. См. Раздел "Формальный синтаксис" для точных синтаксических определений аргументов
BODY Сообщения, содержащие указанную строку в тексте сообщения.
... так что я задаюсь вопросом, могу ли я искать внутри тела электронной почты, не загружая его сначала?
Функция 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. Не спрашивайте!
imap_open()
иimap_search()
и вы узнаете. На странице документации есть пример, просто введите свои учетные данные и критерии поиска.