Bạn muốn sử dụng UniqueId (UID) cho thư. Đây là lý do tại sao nó được tạo ra.
Bạn sẽ muốn theo dõi UID cuối cùng được yêu cầu, và sau đó, để yêu cầu tất cả thư mới bạn sử dụng bộ thông báo "[UID]: *", trong đó [UID] là giá trị UID thực tế. Ví dụ:
Ví dụ: cho phép thông báo cuối cùng được kích hoạt có id duy nhất là "123456". Bạn sẽ tìm nạp
123456: *
Sau đó, hãy hủy thư trả về đầu tiên.
UID được 'cho là' ổn định qua các phiên và không bao giờ thay đổi và luôn tăng giá trị. Việc nắm bắt để xác minh điều này, là kiểm tra UIDValidity khi bạn chọn thư mục. Nếu số UIDValidity không thay đổi, thì UID sẽ vẫn hợp lệ trong các phiên.
Dưới đây là các phần liên quan từ RFC:
2.3.1.1. Mã định danh duy nhất (UID) Thuộc tính
Giá trị 32 bit được gán cho mỗi thư, được sử dụng với giá trị giá trị 64 bit giá trị 64 bit KHÔNG PHẢI tham chiếu đến bất kỳ thư nào khác trong hộp thư hoặc bất kỳ hộp thư tiếp theo nào có cùng tên mãi mãi. Số nhận dạng duy nhất được gán theo kiểu tăng dần trong hộp thư; vì mỗi thông báo được thêm vào hộp thư, nó được gán UID cao hơn các thông báo đã được thêm trước đó. Không giống như chuỗi thông báo số, số nhận dạng duy nhất không nhất thiết phải tiếp giáp.
Mã định danh duy nhất của tin nhắn KHÔNG PHẢI thay đổi trong phiên và KHÔNG được thay đổi giữa các phiên. Bất kỳ thay đổi nào của số nhận dạng duy nhất giữa các phiên PHẢI được phát hiện bằng cách sử dụng cơ chế UIDVALIDITY được thảo luận bên dưới.Số nhận dạng duy nhất liên tục được yêu cầu để khách hàng đồng bộ hóa trạng thái của nó từ phiên trước với máy chủ (ví dụ: ngắt kết nối hoặc truy cập ngoại tuyến khách hàng); điều này được thảo luận thêm trong [IMAP-DISC].
Lưu ý: Giá trị định danh duy nhất tiếp theo là nhằm cung cấp một phương tiện cho một khách hàng để xác định xem bất kỳ thông điệp đã được gửi đến hộp thư kể từ lần trước nó kiểm tra giá trị này.
Dưới đây là liên kết với biết thêm:
http://www.faqs.org/rfcs/rfc3501.html
Những gì tôi sẽ làm gì, cũng được theo dõi các InternalDate của các tin nhắn tải về. Bằng cách này, nếu bạn bị mất đồng bộ hóa UID, bạn ít nhất có thể lặp lại thông qua các thư và tìm thư cuối cùng bạn đã tải xuống, dựa trên InternalDate của thư.
có điều này là hoàn hảo! hãy chắc chắn rằng bạn chạy lệnh "UID 123: *" thay vì chỉ "123: *" trả về kết quả không mong muốn - ví dụ: client.Folders.Inbox.Search ("UID 123: *") –