С момента подтверждения пароля доступ к почтовому ящику открыт. Но прежде, чем приступить к чтению поступившей корреспонденции, необходимо понять, как она храниться на сервере. Конечно же, в папках, ибо в современной компьютерной терминологии папкой называется все, способное вмещать в себя что-то еще [197] Название и содержимое папок определяется самим пользователем, но в любой системе обязательно присутствует папка “INBOX”, в которую помещается поступающая корреспонденция.

Для выбора папки предусмотрена команда “SELECT”, использование которой продемонстрировано в следующем примере:

· kpnc SELECT INBOX· * FLAGS (\Answered \Flagged \Draft \Deleted \Seen)· * OK [PERMANENTFLAGS(\Answered\Flagged\Draft\Deleted\Seen \*)]· * 1 EXISTS· * 1 RECENT· * OK [UNSEEN 1]· * OK [UIDVALIDITY 954332839]· kpnc OK [READ-WRITE] Completed

Значок звездочки указывает на неразрывность информационного потока. До тех пор, пока в начале строки не встретится возращенный тег, никто не должен вклиниваться в процесс передачи.

За ключевым словом “FLAGS” (порядок которого в ответе произволен) перечисляются все доступные флаги для сообщений данной папки. Назначение их такого:

· Answered: на сообщение был отправлен ответ

· Flagged: сообщение имеет флаг (отмечено «галочкой»)

· Draft: незавершенное сообщение (черновик)

· Deleted: сообщение помечено как удаленное, но еще физически не удалено

· Seen: сообщение уже было прочитано

· Recent: только что полученное сообщение [198]

Следующее ключевое слово “PERMANENTFLAGS” показывает, какие флаги сообщений может менять пользователь, где знак «*» (джокер) обозначает «все флаги».

Две строки, расположенные ниже, говорят о том, что в ящике содержится всего одно письмо, которое было только что получено. «Только что» следует трактовать как «в промежутке между двумя последними сессиями».

Сообщение “UNSEEN 1” входит в перечень необязательных для реализации и подсчитывает количество непрочитанных писем. В приведенном примере имеется только одно такое письмо.

Уникальный временной идентификатор папки, следующий за “UIDVALIDITY”, может использоваться взамен ее имени и варьируется от сессии к сессии.

Последняя строка сообщает права клиента на эту папку. В данном случае доступно чтение и запись сообщений.

Следующий эксперимент демонстрирует технику чтения сообщений. В отличие от POP3, такую, казалось бы, простую операцию выполнить весьма затруднительно. Тогда как POP3 допускает лишь одну возможность - получение всего сообщения целиком, протокол IMAP4 помимо номера выбранного сообщения требует указание критерия запроса!

Полное описание синтаксиса запроса содержится в RFC-1730, с котором настоятельно рекомендуется ознакомиться, но здесь привести даже в общих чертах не представляется возможным.

Сообщение может быть прочитано различными способами, один из которых продемонстрирован ниже. Он заключается в вызове команды “FETCH” с параметрами, обсуждение которых выходит за рамки данной книги, но может быть почерпнуто из RFC-1730.

В простейшем случае для получения заголовка сообщения необходимо перейти в папку, в которой хранится это сообщение (для этого используется команда “SELECT”) и отправить серверу следующий запрос “FETCH msg BODY[HEADER]”, где “msg” порядковый номер требуемого сообщения.

Например, это может выглядеть так:

Перейти на страницу:

Похожие книги