2009-04-17 8 views
6

Tôi đang sử dụng Net :: POP3 trong Perl để lặp qua hộp thư trên máy chủ MS Exchange. Tôi chạy lệnh UIDL trên mỗi số thư và so sánh ID được trả lại cho các ID đã xem trước đó để xem liệu tôi có xử lý thông báo này trong quá khứ hay không. Tuy nhiên, tôi cũng tìm thấy rằng trong một hộp thư POP3 cá nhân, cùng UID dường như đi lên nhiều lần cho các tin nhắn khác nhau.UID có được cung cấp bởi lệnh MSID POP3 UIDL thực sự độc đáo không?

Bất kỳ ý tưởng nào tại sao điều này có thể xảy ra? UID có thật sự độc đáo không? Hoặc là các tin nhắn bằng cách nào đó được nhân đôi trong cùng một hộp thư?

Trả lời

3

The RFC nói:

Trong khi đó là thường thích hợp hơn cho triển khai máy chủ để lưu trữ tùy tiện giao độc đáo-id trong maildrop, đặc điểm kỹ thuật này được thiết kế để cho phép độc đáo-id là tính như một băm của tin nhắn. Khách hàng sẽ có thể để xử lý tình huống trong đó hai bản sao giống hệt nhau của thông báo trong thư có cùng một id duy nhất.

[tôi nhấn mạnh]

+0

Cảm ơn, đó chỉ là những gì tôi đang tìm kiếm. Có vẻ như tôi đang xử lý mọi thứ một cách chính xác, sau đó, khi tôi gặp một UID đã được nhìn thấy, tôi coi nó như là một bản sao và bỏ qua thông điệp. Câu hỏi tiếp tuyến sẽ là: "Thông báo trùng lặp này xảy ra như thế nào?" Nhưng đó là nằm ngoài phạm vi của câu hỏi ban đầu. –

+0

@Peter Wood Chỉ cần một mẹo nhanh - đảm bảo truy vấn tra cứu UID đang tìm kiếm một trường hợp trùng khớp. Tôi đã gặp sự cố vì hành vi mặc định không phân biệt chữ hoa chữ thường khiến mã của tôi vô tình bỏ qua một số e-mail nhất định. –

+0

Kịch bản đó của thông điệp giống nhau thực sự xảy ra trong thực tế? Khi tôi đọc đoạn văn đó trong RFC, tôi nghĩ rằng nó sẽ chỉ bao giờ là một tình huống lý thuyết nghiêm ngặt vì tất cả các dấu thời gian và ID mà các máy chủ ghi vào tiêu đề. – billpg