Ho un'applicazione che viene utilizzata per archiviare i messaggi di posta elettronica usando imap. Anche in questa applicazione ci sono molti account imap che devono essere archiviati.Come scaricare solo nuove email da imap?
In questo momento di volta in volta l'applicazione si collega agli account imap e scarica solo nuove e-mail. Il mio problema è che ogni volta che si connette a un account imap verifica tutte le email da tutte le cartelle e scarica solo le email che non sono ancora state scaricate (memorizzo Message-ID per tutte le email e scarichi solo le email che hanno un ID messaggio che non è memorizzato). Quindi voglio sapere se c'è un'alternativa per questo, perché ci vuole del tempo per verificare tutte le e-mail (per 10-20K ci vogliono 2-5 minuti).
Uso l'API JavaMail per connettersi agli account imap.
Non è una soluzione per me perché gli UID sono cambiati nel tempo, questo è il motivo per cui utilizzo Message-ID per tenere traccia delle e-mail scaricate. – telebog
come ho capito il metodo getUID (messaggio messaggio), è possibile ottenere il MessageUID effettivo per il messaggio specificato dal server. Quindi sarebbe possibile ottenere l'UID effettivo dell'ultimo messaggio che hai e quindi usare i metodi getUIDNext() e getMessagesByUID() per trovare l'ultimo messaggio e scaricare l'intervallo specificato. – Erik
Un UID messaggio cambierà quando il messaggio viene spostato da una cartella (o "mailbox", nella terminologia IMAP) a un'altra. ["Gli identificatori univoci sono assegnati in modo strettamente crescente nella cassetta postale, poiché ogni messaggio viene aggiunto alla cassetta postale a cui è assegnato un UID più alto rispetto al messaggio/i che sono stati aggiunti in precedenza."] (Http: //tools.ietf .org/html/rfc3501 # section-2.3.1.1) telebog sembra voler scaricare ogni messaggio esattamente una volta, indipendentemente dalla cartella in cui si trova. – dkarp