2011-04-11 31 views
11

Ho uno script IMAP più piccolo scritto in Python (3.2).RICERCA PRIMA/DOPO con Pythons imaplib

ho la mia ricerca-line simile a questa:

typ, data = M.search(None, 'FROM', '"MyName"') 

ottengo i risultati attesi. Tuttavia, se cambio a qualcosa come:

typ, data = M.search(None, 'AFTER', '"01-Jan-2010"') 

(con o senza data citata, ottengo questo errore

Traceback (most recent call last): 
    File "./priv/imap.py", line 100, in <module> 
    main() 
    File "./priv/imap.py", line 93, in main 
    print(to_json(fetch_result(M, args), args)) 
    File "./priv/imap.py", line 51, in fetch_result 
    typ, data = M.search(None, 'AFTER', '"01-Jan-2010"') 
    File "/usr/lib/python3.2/imaplib.py", line 652, in search 
    typ, dat = self._simple_command(name, *criteria) 
    File "/usr/lib/python3.2/imaplib.py", line 1121, in _simple_command 
    return self._command_complete(name, self._command(name, *args)) 
    File "/usr/lib/python3.2/imaplib.py", line 957, in _command_complete 
    raise self.error('%s command error: %s %s' % (name, typ, data)) 
imaplib.error: SEARCH command error: BAD [b'Could not parse command'] 

Non ho idea del perché questo sarebbe illegale, ma tutto l'aiuto sarà apprezzato! Inoltre, quello che ultimatly voglio fare è l'uso più "giovane 1234567" al fine di fare un po 'di filtraggio più fine, ma non sono sicuro se gmail/Python supporta questo ancora.

grazie in anticipo

risposta

4

voi può provare:

typ, data = M.search(None, '(SINCE "01-Jan-2010")') 

o se si sta utilizzando UID:

typ, data = M.uid('search', '(SINCE 01-Jan-2010)') 
+1

è possibile utilizzare anche il tempo con la data? –

+1

@ user250145 no, questi comandi sono fatti "ignorando il fuso orario e il fuso orario": http://tools.ietf.org/html/rfc3501.html#section-6.4.4 – lajarre

12

È possibile utilizzare la ricerca come questi:

Ma sembra che non supporta tempo dettagliate, ma solo la data.

e la data è la data interna (trascurando tempo e fuso orario) della mail

M.search(None, '(SINCE "01-Jan-2012")') 
M.search(None, '(BEFORE "01-Jan-2012")') 
M.search(None, '(SINCE "01-Jan-2012" BEFORE "02-Jan-2012")') 
+0

I paren non sono necessari. – arnt

Problemi correlati