5. Состояние TRANSACTION
После того как клиент успешно идентифицировал себя на сервере и сервер заблокировал и открыл соответствующий почтовый ящик, сессия переходит в состояние TRANSACTION. Теперь клиент может запрашивать информацию. После каждой команды сервер отправляет ответ. В конце клиент отправляет команду QUIT, и сессия переходит в состояние UPDATE.
Вот команды POP3, валидные в состоянии TRANSACTION:
STAT
- Аргументы:
нет
- Ограничения:
Может быть передана только в состоянии TRANSACTION.
- Подробности:
POP3 сервер отправляет положительный ответ со строкой содержащей информация о почтовом ящике. Эта строка называется «drop listing».
Для легкого разбора, всем POP3-серверам необходимо использовать определенный формат для «drop listing». Положительный ответ включает в себя: индикатор состояния (+OK), дальше следуют число сообщений и размер сообщений в октетах, разделенные одиночным пробелом. Этот документ не определяет требований к тому, что следует за размером maildrop. Минимальная реализация должна заканчивать эту строку парой CRLF. Различные расширения могут включать дополнительную информацию.
Примечание: Этот документ СТРОГО не рекомендует добавлять дополнительную информацию в «drop listing». Другие, опциональные средства, которые разрешают клиенту разбирать сообщения в maildrop, обсуждаются ниже.
Отметим так же, что сообщения, помеченные как удаленные, не учитываются.
- Возможные ответы:
+OK nn mm
- Примеры:
C: STAT S: +OK 2 320
LIST [сообщение]
- Аргументы:
Номер сообщения (необязательный), сообщения, помеченные как удаленные, не учитываются.
- Ограничения:
Может быть передана только в состоянии TRANSACTION.
- Подробности:
Если задан аргумент, сервер передает положительный ответ со строкой информации для заданного сообщения. Такая строка называется «scan listing».
Если аргумент не задан и POP3 сервер отвечает положительным ответом, то данный ответ является многострочным. После индикатора состояния (+OK), для каждого сообщения в почтовом ящике, POP3 сервер посылает строку содержащую информацию для данного сообщения. Эта строка называется «scan listing». Если почтовый ящик пуст, POP3-сервер отвечает без «scan listing» — он выдает положительный ответ, сопровождаемый строкой, содержащей октет завершения и пару CRLF.
Для легкого разбора, всем POP3-серверам необходимо использовать определенный формат для «scan listing». «scan listing» состоит из номера сообщения после которого, через одиночный пробел следует точный размер сообщения в октетах. Методы вычисления точного размера сообщения, описаны ниже, в разделе «Формат Сообщений». Данный документ не указывает, что должно следовать за размером сообщения, единственное требование — чтобы ответ заканчивался парой CRLF. Различные расширения могут включать дополнительную информацию.
Примечание: Этот документ СТРОГО не рекомендует добавлять дополнительную информацию в «scan listing».
Отметим так же, что сообщения, помеченные как удаленные, не учитываются.
- Возможные ответы:
+OK scan listing follows
-ERR no such message- Примеры:
C: LIST S: +OK 2 messages (320 octets) S: 1 120 S: 2 200 S: . ... C: LIST 2 S: +OK 2 200 ... C: LIST 3 S: -ERR no such message, only 2 messages in maildrop
RETR [сообщение]
- Аргументы:
Номер сообщения (обязательный), сообщения, помеченные как удаленные, не учитываются.
- Ограничения:
Может быть передана только в состоянии TRANSACTION.
- Подробности:
При положительном ответе, после положительного индикатора состояния сервер передает многострочный ответ, содержащий заданное сообщение.
- Возможные ответы:
+OK message follows
-ERR no such message- Примеры:
C: RETR 1 S: +OK 120 octets S: <the POP3 server sends the entire message here> S: .
DELE [сообщение]
- Аргументы:
Номер сообщения (обязательный), сообщения, помеченные как удаленные, не учитываются.
- Ограничения:
Может быть передана только в состоянии TRANSACTION.
- Подробности:
POP3 сервер помечает сообщение как удаленное. Все последующие обращения к этому сообщению будут вызывать ошибку. Фактически сервер не удаляет сообщение, пока не наступит состояние UPDATE.
- Возможные ответы:
+OK message deleted
-ERR no such message- Примеры:
C: DELE 1 S: +OK message 1 deleted ... C: DELE 2 S: -ERR message 2 already deleted
NOOP
- Аргументы:
Нет.
- Ограничения:
Может быть передана только в состоянии TRANSACTION.
- Подробности:
Сервер ничего не делает и отвечает только положительно.
- Возможные ответы:
+OK
- Примеры:
C: NOOP S: +OK
RSET
- Аргументы:
Нет.
- Ограничения:
Может быть передана только в состоянии TRANSACTION.
- Подробности:
Если сообщение было помечено как удаленное, то сервер снимает эту отметку. Ответ всегда положительный.
- Возможные ответы:
+OK
- Примеры:
C: RSET S: +OK maildrop has 2 messages (320 octets)