6.3.11. Команда APPEND
Аргументы: | имя почтового ящика, [заключенный в скобки список флагов], [строка даты/времени], сообщение |
Отклик: | для этой команды не существует специфических откликов |
Результат: | OK — успешное добавление NO — ошибка — невозможно добавить сообщение в указанный ящик, ошибка в флагах, дате или тексте BAD — команда не поддерживается или некорректны аргументы |
Команда APPEND добавляет переданный ей аргумент как новое сообщение в конце указанного почтового ящика. Для аргументов следует использовать синтаксис [RFC-822]. В сообщении допускаются 8-битовые символы. Серверы, неспособные корректно сохранять 8-битовые символы, ДОЛЖНЫ обеспечивать обратимое преобразование 8-битовых данных команды APPEND в 7-битовые с использованием транспортного кодирования содержимого [MIME-IMB]. Отметим, что эти правила могут иметь исключения — например, при использовании команды APPEND для сохранения черновиков сообщений можно опустить строки заголовка [RFC-822]. Однако использоваться такие исключения должны с осторожностью.
Если присутствует список флагов в скобках, в добавленном сообщении следует установить заданные флаги (по умолчанию флаги отсутствуют).
Если указана дата и время, для добавленного сообщения следует установить заданные значения даты и времени (по умолчанию устанавливаются текущая дата и время).
Если при добавлении произошла какая-то ошибка, почтовый ящик ДОЛЖЕН быть восстановлен в исходном виде (как до команды APPEND) — частичная добавка сообщения недопустима. Если указанного почтового ящика не существует, сервер ДОЛЖЕН возвратить сообщение об ошибке; автоматическое создание почтового ящика недопустимо. Кроме тех случаев, когда указанный почтовый ящик не может быть создан, сервер ДОЛЖЕН добавлять код [TRYCREATE] перед текстом помеченного отклика NO, намекая клиенту на возможность использования команды CREATE и повтора APPEND при удачном создании почтового ящика.
Если почтовый ящик в данный момент выбран, следует выполнить действия как при обычном получении нового сообщения. В частности, серверу следует незамедлительно уведомить клиента с помощью непомеченного отклика EXISTS. Если сервер не делает этого, клиент может ввести команду NOOP (или CHECK) после одной или нескольких команд APPEND.
Пример: C: A003 APPEND saved-messages (\Seen) {310} C: Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST) C: From: Fred Foobar <[email protected] > C: Subject: afternoon meeting C: To: [email protected] C: Message-Id: <[email protected] > C: MIME-Version: 1.0 C: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII C: C: Hello Joe, do you think we can meet at 3:30 tomorrow? C: S: A003 OK APPEND completed
Отметим, что команда APPEND не используется для доставки почты, поскольку она не обеспечивает механизма передачи информации из конвертов [SMTP].