6.4.4. Команда SEARCH
Аргументы: | [CHARSET], критерии поиска (один или несколько) |
Отклик: | Обязательный непомеченный отклик SEARCH |
Результат: | OK — удачное завершение поиска NO — ошибка — невозможно : can't search that [CHARSET] or criteria BAD — команда не поддерживается или некорректны аргументы |
Команда SEARCH обеспечивает поиск в почтовом ящике сообщений, удовлетворяющих заданным критериям. Критерий поиска содержит один или несколько ключей. Непомеченный отклик SEARCH от сервера содержит список порядковых номеров сообщений, которые соответствуют критерию поиска.
При использовании множества ключей поиска они комбинируются с помощью логической операции AND (и). Например, критерий DELETED FROM "SMITH" SINCE 1-Feb-1994 задает поиск всех удаленных сообщений от Smith, помещенных в ящик после 1 февраля 1994 года. При задании ключей поиска могут использоваться логические операции OR (или) и NOT (отрицание), а также скобки.
Сервер может исключать части [MIME-IMB] в теле сообщения с типами, отличными от TEXT или MESSAGE при выполнении команды SEARCH.
Необязательный параметр [CHARSET] состоит из ключевого слова CHARSET, за которым следует зарегистрированное значение [CHARSET]. Этот параметр задает набор символов в строке критерия поиска. Транспортное кодирование [MIME-IMB] и строки [MIME-HDRS] в заголовках [RFC-822]/[MIME-IMB] ДОЛЖНЫ декодироваться перед сравнением текста, если [CHARSET] отличается от US-ASCII. Кодировка US-ASCII должна поддерживаться, другие варианты [CHARSET] также можно поддерживать. Если сервер не поддерживает заданное значение [CHARSET], он должен возвращать помеченный отклик NO (а не BAD).
Во всех ключах поиска, содержащих строки текста, условие считается выполненным, если ключ поиска является частью строки в сообщении. Регистр символов при поиске не учитывается.
Ниже перечислен список поддерживаемых ключей, а их синтаксические определения приведены в главе 9. Формальный синтаксис.
<message set> | сообщения с порядковым номером, соответствующим указанному набору номеров. |
ALL | все сообщения в почтовом ящике; принято по умолчанию как стартовый ключ для AND. |
ANSWERED | сообщения с установленным флагом \Answered. |
BCC <string> | сообщения, содержащие указанную строку в структуре поля BCC в конверте. |
BEFORE <date> | сообщения, в которых внутренняя дата раньше указанной. |
BODY <string> | сообщения, содержащие указанную строку в теле письма. |
CC <string> | сообщения, содержащие указанную строку в структуре поля CC в конверте. |
DELETED | сообщения с установленным флагом \Deleted. |
DRAFT | сообщения с установленным флагом \Draft. |
FLAGGED | сообщения с установленным флагом \Flagged. |
FROM <string> | сообщения, содержащие указанную строку в структуре поля FROM в конверте. |
HEADER <field-name> <string> | сообщения, в заголовке которых содержится поле с указанным именем (определено в [RFC-822]) и содержимым. |
KEYWORD <flag> | сообщения с установленным флагом, который указан. |
LARGER <n> | сообщения с размером [RFC-822], превышающим заданное число октетов. |
NEW | сообщения с установленным флагом \Recent, но без флага \Seen (эквивалент RECENT UNSEEN — получено недавно и не прочитано)". |
NOT <search-key> | сообщения, не соответствующие заданному ключу поиска. |
OLD | сообщения без флага \Recent (функциональный эквивалент NOT RECENT). |
ON <date> | сообщения, для которых внутренняя дата совпадает с заданной. |
OR <search-key1> <search-key2> | сообщения, соответствующие хотя бы одному ключу поиска. |
RECENT | сообщения с флагом \Recent. |
SEEN | сообщения с флагом \Seen flag. |
SENTBEFORE <date> | сообщения, для которых дата [RFC-822] Date: раньше указанной. |
SENTON <date> | сообщения, для которых дата [RFC-822] Date: совпадает с указанной. |
SENTSINCE <date> | сообщения, для которых дата [RFC-822] Date: совпадает с указанной или позже ее. |
SINCE <date> | сообщения, для которых внутренняя дата совпадает с указанной или позже ее. |
SMALLER <n> | сообщения размером [RFC-822] меньше указанного числа октетов. |
SUBJECT <string> | сообщения, содержащие указанную строку в поле SUBJECT конверта. |
TEXT <string> | сообщения, содержащие указанную строку в заголовке или теле письма. |
TO <string> | сообщения, содержащие указанную строку в поле TO конверта. |
UID <message set> | сообщения с уникальными идентификаторами, соответствующими указанному набору. |
UNANSWERED | сообщения без флага \Answered. |
UNDELETED | сообщения без флага \Deleted. |
UNDRAFT | сообщения без флага \Draft. |
UNFLAGGED | сообщения без флага \Flagged. |
UNKEYWORD <flag> | сообщения без указанного ключом флага. |
UNSEEN | сообщения без флага \Seen. |
Пример: C: A282 SEARCH FLAGGED SINCE 1-Feb-1994 NOT FROM "Smith" S: * SEARCH 2 84 882 S: A282 OK SEARCH completed