Tôi không biết ý của bạn là gì khi bạn nói UID không phải là duy nhất trong hộp thư, chỉ trong các thư mục con. Theo thư mục con, bạn có ý gì khác ngoài INBOX không? Trong mọi trường hợp, nó có vẻ sai. Các UID trên thực tế là duy nhất trong mỗi thư mục và nó không thành vấn đề, đó là INBOX hoặc bất kỳ thư mục nào khác.
Điều có thể xảy ra là UID có thể thay đổi giữa các phiên. Nói chung, điều này xảy ra nếu máy chủ IMAP mất chỉ mục và phải xây dựng lại chúng hoặc nếu thư được di chuyển từ máy chủ IMAP này sang máy chủ IMAP khác, v.v ... Nếu điều này xảy ra thì tất nhiên bạn sẽ mất tất cả các liên kết giữa email và dữ liệu bổ sung (ghi chú hoặc danh bạ).
Bạn có thể dựa vào điều này: một UID sẽ không bao giờ đột nhiên đề cập đến một thông điệp khác. Hoặc nó sẽ vẫn hợp lệ và đề cập đến cùng một thông điệp mà nó luôn được đề cập, nếu không nó sẽ trở thành không hợp lệ.
Bạn có thể muốn kiểm tra cách máy chủ IMAP cụ thể của bạn tạo và duy trì UID. Các máy chủ IMAP khác nhau thực hiện các lời hứa khác nhau về tính bền vững của các giá trị UID. Ngay cả trong một máy chủ IMAP, nó có thể thay đổi tùy theo định dạng hộp thư được sử dụng. Ví dụ, với Dovecot, mong đợi các UID dễ vỡ hơn với mdbox so với mbox hoặc Maildir vì siêu dữ liệu được tích hợp chặt chẽ hơn với các email thực tế với mdbox.
Tôi đề nghị sử dụng UID để tham khảo các tin nhắn trên máy chủ IMAP, với Message-ID
tư cách là bản sao lưu. Message-ID
điều này không tốt vì có thể trùng lặp và (đối với hầu hết các máy chủ IMAP) việc tìm kiếm Message-ID
có thể chậm hơn, nhưng tốt hơn là mất hoàn toàn việc theo dõi tin nhắn.