RFC: 2060
Оригинал: Internet Message Access Protocol v.4 rev.1
Другие версии: RFC 1730, RFC 3501
Категория: Предложенный стандарт
Дата публикации:
Автор:
Перевод: Николай Малых

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.SIZEThe [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
2007 - 2018 © Русские переводы RFC, IETF, ISOC.