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