6.4.5. Команда FETCH
Аргументы: | набор сообщений, имена элементов данных в сообщениях |
Отклик: | непомеченный отклик FETCH |
Результат: | OK — успешная выборка NO — неудача при попытке выборки BAD — команда не поддерживается или некорректны аргументы |
Команда FETCH отыскивает данные, связанные с сообщениями в почтовом ящике. Отыскиваемые данные могут задаваться с помощью атома или списка в скобках.
В настоящее время поддерживаются выборки для следующих типов данных:
ALL | Макроопределение для (FLAGS INTERNALDATE RFC822.SIZE ENVELOPE) |
BODY | Нерасширяемая форма BODYSTRUCTURE |
BODY[<section>]<<partial>> | Текст в конкретной секции тела сообщения. Спецификация секций сообщения (если она присутствует) задается номером или одним из идентификаторов: HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, MIME, TEXT. Пустая спецификация секции задает поиск по всему сообщению, включая заголовки. Каждое сообщение имеет по крайней мере один номер секции (части сообщения). Сообщения, не относящиеся к [MIME-IMB], и сообщения [MIME-IMB] без инкапсуляции имеют только часть 1. В многосекционных сообщениях каждая часть имеет порядковый номер (начиная с 1). Если отдельная часть имеет тип сообщения или содержит в себе отдельные части, нумерация должна задаваться двумя числами (через запятую) — сначала номер основной части, затем — вложенной. Части типа MESSAGE/RFC822 также имеют номера вложенных частей, указывающие на части тела сообщения. Идентификаторы HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, TEXT могут указывать секцию сообщения сами по себе или использоваться с числовым префиксом, указывающим номер части типа MESSAGE/RFC822. Идентификатор MIME ДОЛЖЕН использоваться с одним или несколькими числовыми префиксами. Идентификаторы HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT указывают на заголовок сообщения [RFC-822] или инкапсулированного сообщения [MIME-IMT] MESSAGE/RFC822. Идентификаторы HEADER.FIELDS и HEADER.FIELDS.NOT сопровождаются списком имен полей (определены в [RFC-822]) и возвращают часть заголовка. Идентификатор HEADER.FIELDS задает возврат включены в список, а при использовании HEADER.FIELDS.NOT возвращаются поля, которые отсутствуют в списке. При сравнении имен полей регистр символов не учитывается, а в остальных случаях сравнение ведется с учетом регистра. Во всех случаях пустая строка между заголовком и телом сообщения включается в результат поиска. Идентификатор MIME указывает на заголовок [MIME-IMB] для этой части. Идентификатор TEXT указывает на текст тела сообщений без заголовка [RFC-822]. Ниже приведен пример сложного сообщения с указателями на его отдельные части: HEADER (заголовок [RFC-822] для сообщения) TEXT MULTIPART/MIXED 1 TEXT/PLAIN 2 APPLICATION/OCTET-STREAM 3 MESSAGE/RFC822 3.HEADER (заголовок [RFC-822]) 3.TEXT (текст тела сообщения [RFC-822]) 3.1 TEXT/PLAIN 3.2 APPLICATION/OCTET-STREAM 4 MULTIPART/MIXED 4.1 IMAGE/GIF 4.1.MIME (заголовок [MIME-IMB] для IMAGE/GIF) 4.2 MESSAGE/RFC822 4.2.HEADER (заголовок [RFC-822]) 4.2.TEXT (текст тела сообщения [RFC-822]) 4.2.1 TEXT/PLAIN 4.2.2 MULTIPART/ALTERNATIVE 4.2.2.1 TEXT/PLAIN 4.2.2.2 TEXT/RICHTEXT Возможна выборка подстроки обозначенного текста, осуществляемая путем добавления конструкции <позиция первого желаемого. максимальное число возвращаемых октетов> к спецификатору выборки. Если стартовый октет указывает за пределы текста, возвращается пустая строка. Любая попытка частичной выборки за пределами текста усекается. Частичная выборка с позиции всегда дает результат, даже если происходит усекновение. Отметим, что выборка подстроки для HEADER.FIELDS или HEADER.FIELDS.NOT рассчитывается после выделения из заголовка нужных полей. Флаг \Seen устанавливается явно; если это ведет к изменению флагов, их следует включать как часть откликов FETCH. |
BODY.PEEK[<section>]<<partial>> | Другая форма BODY[<section>], не устанавливающая явно флаг \Seen. |
BODYSTRUCTURE | Структура [MIME-IMB] в теле сообщения, рассчитываемая сервером путем разбора полей заголовка [MIME-IMB] в заголовке [RFC-822] и заголовков [MIME-IMB]. |
ENVELOPE | Структура конверта в сообщении, рассчитываемая сервером путем разбора заголовка [RFC-822] на составные части с установкой при необходимости принятых по умолчанию значений полей. |
FAST | Макроопределение для (FLAGS INTERNALDATE RFC822.SIZE) |
FLAGS | Флаги, установленные для сообщения. |
FULL | Макроопределение для (FLAGS INTERNALDATE RFC822.SIZE ENVELOPE BODY) |
INTERNALDATE | Внутренняя дата сообщения. |
RFC822 | Функциональный эквивалент BODY[], отличающийся синтаксисом непомеченных данных FETCH (возвращается RFC822). |
RFC822.HEADER | Функциональный эквивалент BODY.PEEK[HEADER], отличающийся синтаксисом непомеченных данных FETCH (возвращается RFC822.HEADER). |
RFC822.SIZE | The [RFC-822] size of the message. |
RFC822.TEXT | Функциональный эквивалент BODY[TEXT], отличающийся синтаксисом непомеченных данных FETCH (возвращается RFC822.TEXT). |
UID | Уникальный идентификатор сообщения. |
Пример: C: A654 FETCH 2:4 (FLAGS BODY[HEADER.FIELDS (DATE FROM)]) S: * 2 FETCH .... S: * 3 FETCH .... S: * 4 FETCH .... S: A654 OK FETCH completed