Pertama-tama, di IMAP, tidak ada persyaratan yang menyiratkan bahwa FETCH BODYSTRUCTURE
akan mentransfer data pesan lengkap dengan lampiran. Entah asumsi Anda salah, atau perpustakaan IMAP Anda memiliki bug yang parah, atau Anda menggunakan fungsi yang salah di sini.
Kedua, Anda menyebutkan melacak UID tetapi tidak mengatakan apa-apa tentang UIDVALIDITY
. Baca RFC 3501
untuk memahami apa artinya. Tidak mungkin Anda dapat mengimplementasikan aplikasi yang berbicara IMAP dengan benar tanpa mengetahui protokolnya. Petunjuk lebih lanjut juga diberikan di RFC 4549
.
Pertanyaan ketiga Anda adalah tentang meminta item yang dihapus atau dipindahkan. Di IMAP dasar, Anda tidak bisa melakukan itu. Satu-satunya cara untuk mengetahui pesan apa yang telah dihapus dan yang merupakan pendatang baru adalah dengan melacak UID secara eksplisit -- dengan asumsi UIDVALIDITY
diberikan dan tidak berubah, Anda membandingkan daftar UID sejak terakhir kali dengan apa yang Anda dapatkan sekarang, dan melihat mana yang baru dan mana yang hilang. Sekali lagi, baca RFC, yang berisi jawaban atas semua pertanyaan Anda serta saran tentang cara mengoptimalkan proses sinkronisasi. Ada juga tesis tentang IMAP
yang membahas lebih detail tentang cara lebih meningkatkan obrolan protokol dan ekstensi apa yang relevan. Ini bukan proyek yang mudah.