Portál AbcLinuxu, 3. května 2025 22:54
Už opět nastala situace, že mi napsání vlastního skriptu připadalo jednodušší než hledání hotového nástroje . Pokud se tedy někdo potřebuje podívat na stav složek na IMAPu, může použít následující skriptík.
#!/usr/bin/python import sys import imaplib m = imaplib.IMAP4('SERVER') res = m.login('USERNAME', 'PASSWORD') if res[0] != 'OK': sys.stderr.write("login: %s\n" % str(res)) sys.exit(1) typ, list = m.list() if typ != 'OK': sys.stderr.write("list:") sys.exit(2) for item in list: vals = item.split() name = vals[2][1:][:-1] typ, val = m.status(name, '(UNSEEN RECENT)') if typ != 'OK': sys.stderr.write("status:") sys.exit(2) print val[0]
Tiskni
Sdílej:
Ok, upřesním něco o IMAPu4.
Je specifikován RFC-2060, původní IMAP byl popsán RFC-1730.
Imap standardně "běží" na portu 143.
Klient příkazy čísluje, jelikož odpovědi mohou přicházet v libovolném pořadí.
Příkazy:
CAPABILITY - vypíše "featury" LOGIN uživatel heslo - zalogování, přejde se do autentizovaného stavu CREATE, DELETE, RENAME, LIST - pracuje se s poštovní schránkou, jméno schránky se píše v uvozovkách SUBSCRIBE, LSUB, UNSUBSCRIBE - klient tím sdělí serveru, aby označil soubor jako poštovní schránku STATUS - umožní vypsat info o schránce bez otevření této schránky SELECT a EXAMINE - otvírá poštovní schránku v r/w nebo r/o režimu COPY - kopíruje zprávy z otevřené do zvolené schránky SEARCH - umožňuje vyhledávání ve schránce FETCH - umožnňuje stahovat ze serveru zprávu STORE - umožňuje změnit atibuty položek ve schránce EXPUNGE - umožní smazat označené zprávy CLOSE - uzavře poštovní schránku a přejde do režimu "autentizovaný stav"(Ne, že si to pamatuju z hlavy, ale mám odkud opisovat
login_cram_md5
místo login
… všechno je v dokumentaci.
Dyť v imapu je právě příkaz CAPABILITY, co umožňuje vidět, co server nabízí - to to v pythonu nic takového neexistuje?
capabilities
. Jinak libovolnou autentizační metodu lze udělat pomocí authenticate()
, je ovšem potřeba napsat funkci, která na výzvu serveru vrátí správný auntetizační text.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.