Seleziona i messaggi dalla posta in arrivo da solo tramite poplib
Domanda
Devo scaricare le e-mail dalla posta in arrivo di Gmail solo usando poplib. Sfortunatamente non vedo alcuna opzione per selezionare Inbox da solo, e poplib mi dà e-mail anche dagli elementi inviati.
Come seleziono le email solo dalla posta in arrivo?
Non voglio usare nessuna libreria specifica di Gmail.
Soluzione
POP3 non ha il concetto di "cartelle". Se gmail ti sta mostrando sia la posta "inviata" che quella "ricevuta", allora non hai davvero alcuna opzione se non quella di ricevere tutta quell'email.
Forse sarebbe meglio usare IMAP4 invece di POP3. Python ha librerie che funzioneranno con il server IMAP4 di gmail.
Altri suggerimenti
Presumo che tu abbia abilitato l'accesso POP3 / IMAP al tuo account GMail.
Questo è il codice di esempio:
import imaplib
conn= imaplib.IMAP4_SSL('imap.googlemail.com')
conn.login('yourusername', 'yourpassword')
code, dummy= conn.select('INBOX')
if code != 'OK':
raise RuntimeError, "Failed to select inbox"
code, data= self.conn.search(None, ALL)
if code == 'OK':
msgid_list= data[0].split()
else:
raise RuntimeError, "Failed to get message IDs"
for msgid in msgid_list:
code, data= conn.fetch(msgid, '(RFC822)')
# you can also use '(RFC822.HEADER)' only for headers
if code == 'OK':
pass # your code here
else:
raise RuntimeError, "could not retrieve msgid %r" % msgid
conn.close()
conn.logout()
o qualcosa del genere.
Questo codice Java suggerisce che puoi selezionare una particolare cartella " cartella " per scaricare, anche quando si utilizza POP3. Ancora una volta, questo utilizza Java, non Python, quindi YMMV.