Topic: [Problema] imapclient sintassi di metodo serch()  (Letto 133 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline LaPa

  • python unicellularis
  • *
  • Post: 27
  • Punti reputazione: 0
    • Mostra profilo
[Problema] imapclient sintassi di metodo serch()
« il: Febbraio 03, 2019, 09:54 »
Buona sera a tutti!

sto usando con Python 2.7 il modulo imapclient. Il mio scopo è questo: Se ricevo un messaggio con un determinato oggetto invio in automatico una mail a chi me lo ha inviato (ad esempio: oggetto della mail "info", allora invio una mail con informazioni.

Riesco a collegarmi al server

ma in questo punto


UIDs = server.search(['SUBJECT Info'])
print UIDs



la shell risponde:


Traceback (most recent call last):
  File "/mnt/usbhd/RPIProject/Prove/ReportOnRequest.py", line 291, in <module>
    UIDs = server.search(['SUBJECT Info'])
  File "/usr/local/lib/python2.7/dist-packages/imapclient/imapclient.py", line 956, in search
    return self._search(criteria, charset)
  File "/usr/local/lib/python2.7/dist-packages/imapclient/imapclient.py", line 995, in _search
    criteria='"%s"' % criteria if not isinstance(criteria, list) else criteria
InvalidCriteriaError: 'Could not parse command'

This error may have been caused by a syntax error in the criteria: ['SUBJECT Info']
Please refer to the documentation for more information about search criteria syntax..
https://imapclient.readthedocs.io/en/master/#imapclient.IMAPClient.search




Sapreste dirmi come eliminare il problema?

grazie per l'attenzione

Saluti

LaPa

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re: [Problema] imapclient sintassi di metodo serch()
« Risposta #1 il: Febbraio 05, 2019, 22:53 »
1. E' eccessivamente piu' comodo cambiare approccio: tira su un coso unix che ti legge la posta (o meglio, che te la mette su disco)  e scrivi un coso python che processa una mbox (o quel cavolo che usa l'aggeggio che scarica)
2. in entrambi i casi manca un pezzo: la gestione della storia. se pensi di basarti solo su imap, spacchi tutto la prima volta che usi un client diverso che magari cambia lo stato dei messaggi (tipo perche' li hai letti o li ha presi). se invece fai si che questo aggeggio che scrivi non cambi lo stato, devi fare in modo che non continui a processare i messaggi (oltretutto c'e' il problema di cosa vuoi fare quando qualcuno ti risponde alla mail automatica...). Se vai su disco devi sostanzialmente gestirti cosa hai processaato e cosa no.
3. per l'errore specifico, leggi la documentazione, trova le differenze con quello che hai scritto tu/copia l'esempio li contenuto.