Obsah
Časová náročnost kapitoly: 30 minut
Protokol se nachází ve vybraném stavu pokud v autentizovaném stavu
klient vybral poštovní složku, se kterou chce dále pracovat. Vybraný
stav umožňuje pracovat se zprávami vybrané poštovní složky. Protokol
IMAP na rozdíl od protokolu POP3 dokáže pracovat přímo s jednotlivými
částmi zprávy, které se zde nazývají položky zprávy. Tyto položky
mohou být např. ALL (celá zpráva), BODY (nerozšiřitelná struktura
těla zprávy), BODY[<section>] (definované jednotlivé položky
těla zprávy). Výčet těchto nastavení
Příkaz FETCH načte obsah příslušné
zprávy podle zadaných položek zprávy.
parametry:
množina
zpráv
jméno
položky zprávy ALL, BODY
data:
neoznačená odpověď FETCH
výsledek:
OK
- FETCH provedeno
NO
- FETCH selhalo: nemohu předat požadovaná data
BAD
- neznámý příkaz nebo špatný argument
Příklad:
C: A654 FETCH 2:4 (FLAGS
BODY[HEADER.FIELDS (DATE FROM)])
příkaz vypíše obsah zpráv
2-4 podle nastavení
S: * 2 FETCH ....
místo znaků .... nasleduje obsah zprávy číslo 2
S:
* 3 FETCH ....
S: * 4 FETCH ....
S:
A654 OK FETCH completed
Příkaz STORE změní data spojená s
danou zprávou. Implicitně se změněná zpráva vrací zpět v neoznačené
odpovědi.
parametry:
množina
zpráv
jméno
položky zprávy
data
položky zprávy
data: neoznačená odpověď FETCH
výsledek:
OK -
STORE provedeno
NO
- STORE selhalo: nemohu uložit požadovaná data
BAD
- neznámý příkaz nebo špatný argument
Příklad:
C: A003 STORE 2:4 +FLAGS
(\Deleted)
S: * 2 FETCH FLAGS (\Deleted
\Seen)
S: * 3 FETCH FLAGS (\Deleted)
S: * 4 FETCH FLAGS (\Deleted \Flagged
\Seen)
S: A003 OK STORE completed
Příkaz CHECK vyžádá kontrolu vybrané
schránky. Operace prováděná během kontroly je závislá na konkrétní
implementaci. Kontrola pomocí check se běžně provádí jako součást
každého příkazu.
parametry: žádné
data: nejsou
specifikována žádná data pro tento příkaz
výsledek:
OK -
kontrola provedena
BAD
- neznámý příkaz nebo špatný argument
Příklad:
C: FXXZ CHECK
S:
FXXZ OK CHECK Completed
Příkaz EXPUNGE vymaže všechny zprávy
označené pro odstranění.
parametry: žádné
data:
neoznačená odpověď EXPUNGE
výsledek:
OK
- vymazání provedeno
NO
- mazání selhalo: nemohu vymazat (např. díky omezeným přístupovým
právům)
BAD
- neznámý příkaz nebo špatný argument
Příklad:
C: A202 EXPUNGE
S:
* 3 EXPUNGE
S: * 3 EXPUNGE
S:
* 5 EXPUNGE
S: * 8 EXPUNGE
Server
odpovídá neoznačenou odpovědí, která je následována identifikátorem
zprávy. kterou odstraňuje
S: A202 OK
EXPUNGE completed
Příkaz SEARCH vyhledá ve schránce
zprávy, které odpovídají zadaným kritériím. Možná vyhledávací
kritéria jsou následující: ALL, ANSWERED, BCC <string>, BEFORE
<date>, BODY <string>, CC <string>, DELETED, DRAFT,
FLAGGED, FROM <string>, HEADER <field-name> <string>,
KEYWORD <flag>, LARGER <n>, NEW, NOT <search-key>,
OLD, ON <date>, OR <search-key1> <search-key2>,
RECENT, SEEN, SENTBEFORE <date>, SENTON <date>, SENTSINCE
<date>, SINCE <date>, SMALLER <n>, SUBJECT
<string>, TEXT <string>, TO <string>, UID <message
set>, UNANSWERED, UNDELETED, UNDRAFT, UNFLAGGED, UNKEYWORD <flag>,
UNSEEN
parametry:
volitelný:
znaková sada
volitelný:
vyhledávací kritéria
data: neoznačená odpověď SEARCH
výsledek:
OK
- vyhledávání provedeno
NO
- vyhledávání selhalo: nemohu vyhledávat podle této znakové sady nebo
kritérií
BAD
- neznámý příkaz nebo špatný argument
Příklad:
C: A282 SEARCH FLAGGED
SINCE 1-Feb-1994 NOT FROM "Smith"
S:
* SEARCH 2 84 882
v odpovědi serveru jsou obsaženy ID všech
zpráv odpovídajících vstupní podmínce
S:
A282 OK SEARCH completed
Příkaz COPY vytvoří kopii zadané
zprávy do určené schránky.
parametry:
množina
zpráv
jméno
poštovní schránky
data: nejsou specifikována žádná data
pro tento příkaz
výsledek:
OK
- kopie vytvořena
NO
- kopírování selhalo: nemohu kopírovat tyto zprávy nebo do zadané
schránky
BAD
- neznámý příkaz nebo špatný argument
Příklad:
C: A003 COPY 2:4 MEETING
S: A003 OK COPY completed
Příkaz UID má dvě formy. V prvním
případě má jako své parametry příkazy COPY, FETCH nebo STORE s
parametry pro vybraný příkaz. Číslo v parametru vnořeného příkazu
(místo množiny zpráv) je jednoznačný identifikátor zprávy, se kterou
chceme pracovat. U příkazu UID je možné zapsat množinu zpráv také
jako interval unikátních identifikátorů zpráv.
Ve
druhém případě má příkaz UID jako parametr příkaz SEARCH s jeho
parametry. Interpretace parametrů je stejná jako u příkazu SEARCH s
tím rozdílem, že číslo vracené v odpovědi na UID SEARCH je
jednoznačný identifikátor nalezené zprávy.
parametry:
jméno
příkazu
argumenty
příkazu
data: neoznačená odpověď FETCH, SEARCH
výsledek:
OK -
UID příkaz proveden
NO
- UID příkaz: nastala chyba při vykonávání příkazu
BAD
- neznámý příkaz nebo špatný argument
Příklad:
C: A999 UID FETCH
4827313:4828442 FLAGS
Klient žádá výpis všech nastavených
návěští (FLAG) u zpráv s jednoznačnými identifikátory ležícími v
množině 4827313 až 4828442
S: * 23
FETCH (FLAGS (\Seen) UID 4827313)
Server odpovídá, jde o
zprávy se sekvenčním číslem 23 až 25, jednoznačné identifikátory
4827313, 4827943, 4828442.
S: * 24
FETCH (FLAGS (\Seen) UID 4827943)
S: * 25
FETCH (FLAGS (\Seen) UID 4828442)
S: A999
UID FETCH completed
Jakýkoli příkaz s předponou X je
experimentální. Příkazy X nejsou standardizovány a jsou závislé na
konkrétní implementaci.
parametry:
závislé
na konkrétní implementaci
data: závislá na konkrétní
implementaci
výsledek:
OK
- příkaz proveden
NO
- nastala chyba při vykonávání příkazu
BAD
- neznámý příkaz nebo špatný argument
Příkaz CLOSE vymaže zprávy označené
pro smazání, protokol přechází do stavu autentizovaného
parametry:
žádné
data: nejsou specifikována žádná data pro tento
příkaz
výsledek:
OK
- uzavření provedeno, přechází se do autentizovaného stavu
NO -
chyba při zavírání: není vybraná žádná schránka
BAD
- neznámý příkaz nebo špatný argument
Příklad:
C: A341 CLOSE
S:
A341 OK CLOSE completed
Vymyslete
sekvenci příkazů, která zjistí zprávu a její jednoznačný
identifikátor, označí zprávu jako vymazanou, odstraní ji,
zkontroluje, zda je odstraněna a přejde do stavu autentizovaného.
Předpokládáme, že protokol je ve vybraném stavu.