För det första, i IMAP, finns det inget krav som skulle innebära att FETCH BODYSTRUCTURE
skulle ha överfört fullständig meddelandedata med bilagor. Antingen är ditt antagande felaktigt, eller så har ditt IMAP-bibliotek en allvarlig bugg, eller så använder du en felaktig funktion här.
För det andra nämnde du att hålla reda på UID men har inte sagt något om UIDVALIDITY
. Läs RFC 3501
att förstå vad det betyder. Det finns inget sätt att du kan implementera ett program som talar IMAP korrekt utan att känna till protokollet. Ytterligare tips finns också i RFC 4549
.
Din tredje fråga handlar om att be om borttagna eller flyttade objekt. I baslinje-IMAP kan du inte göra det. Det enda sättet att veta vilka meddelanden som har raderats och vilka som är de nyanlända är att spåra UID:n explicit -- förutsatt att UIDVALIDITY
gavs och inte ändrades, jämför du listan över UID sedan sist med vad du fick nu, och ser vilka som är nya och vilka som är borta. Återigen, läs RFC:erna, de innehåller svar på alla dina frågor samt förslag på hur man optimerar synkroniseringsprocessen. Det finns också en uppsats om IMAP
som går in mycket mer i detalj på hur man kan förbättra protokollchatten ytterligare och vilka tillägg som är relevanta. Detta är dock inte ett lätt projekt.