Za prvé, v IMAP neexistuje žádný požadavek, který by naznačoval, že FETCH BODYSTRUCTURE
by přenesl kompletní data zprávy s přílohami. Buď je váš předpoklad špatný, nebo má vaše knihovna IMAP závažnou chybu, nebo zde používáte špatnou funkci.
Za druhé, zmínil jste sledování UID, ale neřekl jste nic o UIDVALIDITY
. Přečtěte si RFC 3501
abyste pochopili, co to znamená. Neexistuje způsob, jak byste mohli správně implementovat aplikaci mluvící IMAP bez znalosti protokolu. Další odkazy jsou také uvedeny v RFC 4549
.
Vaše třetí otázka se týká žádosti o smazané nebo přesunuté položky. V základním IMAP to nemůžete udělat. Jediný způsob, jak zjistit, jaké zprávy byly smazány a které jsou nově příchozí, je explicitně sledovat UID – za předpokladu UIDVALIDITY
bylo dáno a nezměnilo se, porovnáte seznam UID od poslední doby s tím, co jste získali nyní, a uvidíte, která jsou nová a která jsou pryč. Znovu si přečtěte RFC, obsahují odpovědi na všechny vaše otázky a také návrhy, jak optimalizovat proces synchronizace. Existuje také teze o IMAP
který jde mnohem podrobněji o tom, jak dále zlepšit protokolový chat a jaká rozšíření jsou relevantní. To však není snadný projekt.