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

RFC 2060, Страница 32 из 51

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

Страница 32 из 51

2007 - 2022 © Русские переводы RFC, IETF, ISOC.