rd_45.134-2000 (524304), страница 10
Текст из файла (страница 10)
| Команда | FETCH |
| Аргументы | ms - набор сообщений items - имена элементов данных сообщеня |
| Описание | Запрос данных, связанных с сообщением в почтовом ящике. Элементами запрашиваемых данных могут быть единственный атом или список в скобках. Могут быть реализованы элементы: ALL - эквивалентно набору FLAGS INTERNALDATE RFC822.SIZE ENVELOPE BODY - нерасширяемая форма BODYSTRUCTURE BODY []<> - текст отдельной секции тела сообщения. Секция - набор определителей части. Определитель части – номер части или одно из следующих значений: HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, MIME, TEXT. Пустой аргумент секции ссылается на сообщение целиком, включая заголовок. Аргумент позволяет выбрать произвольный отрезок выбранной части с точностью до октета. Если указывает вне текста, возвращается пустая строка. Если указываемый отрезок частично выходит за пределы текста, возвращается накрываемый отрезок текста. При выполнении устанавливается флаг \Seen. BODY.PEEK []<> - подобно TEXT, но при выполнении флаг \Seen не устанавливается. BODYSTRUCTURE - структура сообщения согласно RFC 2045 [8]. ENVELOPE - Структура конверта сообщения. FAST - эквивалентно набору FLAGS INTERDATE RFC822.SIZE FLAGS - флаги, установленные для данного сообщения FULL - эквивалентно набору FLAGS INTERDATE RFC822.SIZE ENVELOPE BODY INTERNALDATE - внутренняя дата сообщения RFC822 - эквивалентно BODY[], хотя синтаксис возвращаемого ответа отличен RFC822.HEADER - эквивалентно BODY.PEEK[HEADER], хотя синтаксис возвращаемого ответа отличен RFC822.SIZE - размер сообщения по RFC 822 [2] RFC822.TEXT - эквивалентно BODY[TEXT], хотя синтаксис возвращаемого ответа отличен UID – UID сообщения |
| Возможные ответы без тега | FETCH |
| Возможные ответы с тегом | OK – команда выполнена NO – ошибка выполнения команды BAD - неизвестная команда или ошибка в аргументах |
| Разрешенные состояния | Selected |
| Команда | STORE |
| Аргументы | ms - набор сообщений md - имя элемента данных почтового сообщения value - значение элемента данных почтового сообщения |
| Описание | Изменяет данные, связанные с сообщением в почтовом ящике. Обновленные значения данных возвращаются ответом FETCH. Если после имени элемента данных стоит слово .SILENT, ответ без тега FETCH не должен высылаться сервером. Должны быть реализованы аргументы: FLAGS <список флагов> - Удаляет старый список флагов сообщения и создает новый список флагов FLAGS.SILENT <список флагов> +FLAGS <список флагов> - добавляет указанные флаги к существующему списку +FLAGS.SILENT <список флагов> -FLAGS <список флагов> - Удаляет указанные флаги из списка флагов сообщения -FLAGS.SILENT <список флагов> |
| Возможные ответы без тега | FETCH |
| Возможные ответы с тегом | OK - команда выполнена NO - ошибка закрытия BAD - неизвестная команда или ошибка в аргументах |
| Разрешенные состояния | Selected |
| Команда | COPY |
| Аргументы | Ms - набор сообщений Mn - имя почтового ящика |
| Описание | Команда копирует определенное сообщение в конец указанного ящика адресата. Флаги и внутренняя дата должны быть сохранены. Если указанного почтового ящика не существует, сервер может создать почтовый ящик автоматически. Если сервер не создал почтовый ящик, но может создать ящик с таким именем, он должен отправить ответ NO с тегом и кодом ответа [TRYCREATE]. В случае неудачного выполнения команды, сервер должен вернуть почтовый ящик в состояние, идентичное тому, что было до выполнения команды. |
| Возможные ответы без тега | - |
| Возможные ответы с тегом | OK - команда выполнена NO - ошибка закрытия BAD - неизвестная команда или ошибка в аргументах |
| Разрешенные состояния | Selected |
| Команда | UID |
| Аргументы | cn - имя команды ca - аргументы команды |
| Описание | Команда UID имеет две формы. В первой форме первым аргументом является команда COPY, FETCH или STORE, а вторым аргументом - аргументы указанной команды. Однако в аргументе набора сообщений нужно указывать не последовательные номера сообщений, а UID. Во второй форме команда UID отрабатывает команду SEARCH с соответствующими аргументами. Аргументы интерпретируются так же, как и в команде SEARCH, однако номера, возвращаемые в ответе SEARCH, будут UID вместо порядковых номеров сообщений. |
| Возможные ответы без тега | FETCH, SEARCH |
| Возможные ответы с тегом | OK - команда выполнена NO - ошибка закрытия BAD – неизвестная команда или ошибка в аргументах |
| Разрешенные состояния | Selected |
3.4. Ответы
Сообщения, направляемые от сервера клиенту, называются ответами.
Существуют три формы ответов сервера:
ответы статуса
данные сервера
запрос продолжения команды
Ответы статуса могут быть:
с тегом
без тега
Ответы с тегом показывают результат выполнения команды клиента: статус OK, NO, BAD.
В ответе без тега на месте тега находится символ "*". Ответами статуса без тега могут быть ответ приветствия или ответы статуса, не показывающие результаты выполнения какой-либо команды.
В запросах продолжения команды вместо тега находится символ "+". Эти запросы посылаются клиенту, чтобы показать, что неполная команда принята, и сервер готов принять остаток команды.
3.4.1. Ответы статуса
Ответами статуса являются: OK, BAD, NO, PREAUTH, BYE.
Ответы OK, BAD, NO могут быть с тегом и без тега.
Ответы PREAUTH и BYE всегда с тегом.
Ответы статуса могут включать код ответа. Код ответа состоит из данных внутри квадратных скобок в форме атома. Возможны аргументы, отделенные пробелом.
Список кодов ответа приведен в табл. 2. Все дополнительные коды ответов, реализованные в сервере, должны начинаться с буквы X.
Таблица 2
Список кодов ответа.
| Код ответа: | Описание |
| ALERT | Текст, предназначенный для чтения человеком-клиентом, составленный таким образом, чтобы привлечь внимание клиента. |
| NEWNAME | Ошибка выполнения команд SELECT или EXAMINE в связи с тем, что почтовый ящик с указанным именем больше не существует, так как был переименован. |
| PARSE | Текст, предназначенный для чтения человеком-клиентом и показывающий ошибку разбора заголовка RFC822 [2] или заголовка MIME-IMB сообщения. |
| PERMANENTFLAGS | За данным кодом следует список в скобках, содержащий список флагов, которые клиент может изменить. Список PERMANENTFLAGS может включать в себя специальный флаг \*, говорящий о возможности создания новых ключевых слов путем попыток сохранить данные флаги в почтовом ящике. |
| READ-ONLY | Почтовый ящик выбран в режиме только для чтения. |
| READ-WRITE | Почтовый ящик выбран как доступный для изменений. |
| TRYCREATE | Ошибка выполнения команд APPEND или COPY в связи с тем, что указанный почтовый ящик назначения не существует. |
| UIDVALIDITY | За данным кодом следует десятичное число, указывающее значение валидности UID. |
| UNSEEN | За данным кодом следует десятичное число, показывающее номер первого сообщения без флага \Seen. |
В табл. 3 приведен список ответов статуса. Все сообщения статуса должны содержать текст, предназначенный для чтения человеком-клиентом и содержащий информацию, соответствующую назначению сообщения.
Таблица 3
Список ответов статуса.
| Ответ: | Описание |
| OK | Указывает на информационное сообщение, поступившее от сервера. Если присутствует тег, ответ указывает на успешное выполнение соответствующей команды. Ответ без тега может использоваться в качестве приветствия. |
| NO | Указывает на сообщение об ошибке работы сервера. Если присутствует тег, ответ указывает на ошибку выполнения соответствующей команды. Сообщение без тега является предупреждением и не указывает на то, что команда не выполнена. |
| BAD | Указывает на сообщение ошибки, поступившее от сервера. . Если присутствует тег, ответ указывает на ошибку протокольного уровня в команде клиента, на которую указывает тег. |
| PREAUTH | Может использоваться в качестве приветствия. Указывает на установление преидентифицированного соединения. |
| BYE | Указывает на процесс закрытия соединения. Посылается сервером в случаях: - нормального закрытия соединения по команде LOGOUT - в случае внезапного закрытия соединения сервером (например, в случае останова сервера) - в случае разрыва соединения по таймеру неактивности - при установлении соединения в качестве приветствия, показывающего, что сервер не желает установить соединение в клиентом. |
3.4.2. Ответы статуса сервера и почтового ящика
С помощью данных ответов сервер передает данные клиенту. В табл. 4 приведен список ответов статуса сервера и почтового ящика
Таблица 4
Список ответов статуса сервера и почтового ящика.
| Ответ: | Описание |
| CAPABILITY | Ответ на команду CAPABILITY. Выдается перечень возможностей, поддерживаемых сервером. Должен быть включен атом "IMAP4rev1". Возможность "AUTH=" показывает, что сервер поддерживает данный механизм идентификации. Имена, данные в списке ответа, должны быть либо стандартными, либо начинаться с буквы X. |
| LIST | Ответ на команду LIST. Выдается одно имя, удовлетворяющее спецификации команды LIST. Может быть несколько ответов LIST на команду LIST. В ответе LIST указывается разделитель иерархии. Если почтовый ящик неиерархический, в качестве разделителя иерархии должен стоять NUL. |
| LSUB | Ответ на команду LSUB. Выдается одно имя, удовлетворяющее спецификации команды. Может быть несколько ответов на команду. |
| STATUS | Ответ на команду STATUS. Возвращает имя почтового ящика, удовлетворяющее спецификации команды, и запрошенную информацию статуса. |
| SEARCH | Ответ на команду SEARCH. Возвращает список номеров сообщений, удовлетворяющих критерию поиска. Для команды SEARCH выдаются порядковые номера, для команды UID SEARCH - UID. |
| FLAGS | Ответ на команду SELECT или EXAMINE. Выдает список в скобках, содержащий флаги, которые можно использовать в данном почтовом ящике. |
3.4.3. Ответы размера почтового ящика
С помощью данных ответов сервер передает клиенту информацию об изменениях размера почтового ящика. В табл.5 приведен список ответов размера почтового ящика.
Таблица 5
Список ответов размера почтового ящика.
| Ответ: | Описание |
| EXISTS | Указывает количество сообщений в почтовом ящике. Выдается в ответ на команды SELECT или EXAMINE, или когда меняется размер почтового ящика. |
| RECENT | Указывает количество сообщений в почтовом ящике с установленным флагом \Recent. Выдается в ответ на команды SELECT или EXAMINE, или когда меняется размер почтового ящика. |
3.4.4. Ответы статуса сообщений
С помощью данных ответов сервер передает клиенту данные сообщений. В табл. 6 приведен список ответов статуса сообщений. Сразу за символом "*" находится последовательный номер сообщения.
3.4.5. Ответ запроса продолжения команды
Данный ответ показывает, что сервер готов принять продолжение команды от клиента. Данный ответ используется в команде AUTHORIZATION для выполнения передачи данных сервера клиенту и запроса дополнительных данных клиента.















