Innanzitutto, in IMAP, non esiste alcun requisito che implichi che FETCH BODYSTRUCTURE
avrebbe trasferito i dati completi del messaggio con gli allegati. O la tua ipotesi è sbagliata, o la tua libreria IMAP ha un grave bug o stai usando una funzione sbagliata qui.
In secondo luogo, hai menzionato di tenere traccia degli UID ma non hai detto nulla su UIDVALIDITY
. Leggi RFC 3501
per capire cosa significa. Non è possibile implementare un'applicazione che parli correttamente IMAP senza conoscere il protocollo. Ulteriori indicazioni sono fornite anche in RFC 4549
.
La tua terza domanda riguarda la richiesta di elementi eliminati o spostati. Nell'IMAP di base, non puoi farlo. L'unico modo per sapere quali messaggi sono stati eliminati e quali sono i nuovi arrivati è tracciare gli UID in modo esplicito, assumendo il UIDVALIDITY
è stato fornito e non è stato modificato, confronti l'elenco degli UID dall'ultima volta con quello che hai ricevuto ora e vedi quali sono nuovi e quali sono spariti. Ancora una volta, leggi le RFC, contengono risposte a tutte le tue domande e suggerimenti su come ottimizzare il processo di sincronizzazione. C'è anche una tesi sull'IMAP
che approfondisce molto più in dettaglio come migliorare ulteriormente la chat di protocollo e quali estensioni sono rilevanti. Questo non è un progetto facile, però.