předcházející následující

Internet Message Access Protocol


Kapitola 6. Příkazy vybraného stavu

Obsah

6.1. Příkaz FETCH
6.2. Příkaz STORE
6.3. Příkaz CHECK
6.4. Příkaz EXPUNGE
6.5. Příkaz SEARCH
6.6. Příkaz COPY
6.7. Příkaz UID
6.8. Příkaz X
6.9. Příkaz CLOSE

Č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í

6.1. Příkaz FETCH


    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

6.2. Příkaz STORE


    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

6.3. Příkaz CHECK


    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

6.4. Příkaz EXPUNGE


    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

6.5. Příkaz SEARCH


    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

6.6. Příkaz COPY


    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

6.7. Příkaz UID


    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

6.8. Příkaz X


    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

6.9. Příkaz CLOSE


    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

6.10. Cvičení


    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.




předcházející následující