Trước hết, trong IMAP, không có yêu cầu nào ngụ ý rằng FETCH BODYSTRUCTURE
sẽ chuyển toàn bộ dữ liệu tin nhắn với tệp đính kèm. Giả định của bạn là sai hoặc thư viện IMAP của bạn có một lỗi nghiêm trọng hoặc bạn đang sử dụng một chức năng sai ở đây.
Thứ hai, bạn đã đề cập đến việc theo dõi UID nhưng chưa nói gì về UIDVALIDITY
. Đọc RFC 3501
để hiểu ý nghĩa của nó. Không có cách nào bạn có thể triển khai một ứng dụng nói IMAP một cách chính xác mà không biết giao thức. Các gợi ý khác cũng được cung cấp trong RFC 4549
.
Câu hỏi thứ ba của bạn là về việc yêu cầu các mục đã xóa hoặc đã di chuyển. Trong IMAP cơ sở, bạn không thể làm điều đó. Cách duy nhất để biết tin nhắn nào đã bị xóa và tin nhắn nào mới đến là theo dõi các UID một cách rõ ràng - giả sử là UIDVALIDITY
đã được cung cấp và không thay đổi, bạn so sánh danh sách UID từ lần trước với những gì bạn nhận được bây giờ và xem cái nào mới và cái nào đã biến mất. Một lần nữa, hãy đọc RFC, chúng chứa câu trả lời cho tất cả các câu hỏi của bạn cũng như các đề xuất về cách tối ưu hóa quá trình đồng bộ hóa. Ngoài ra còn có một luận án về IMAP
trong đó chi tiết hơn về cách cải thiện hơn nữa giao thức trò chuyện và những tiện ích mở rộng nào có liên quan. Tuy nhiên, đây không phải là một dự án dễ dàng.