2013-02-15 66 views
7

Làm cách nào để tính chuỗi id duy nhất cho từng email trong tài khoản IMAP?Nhận id email duy nhất bằng IMAP trong PHP

Tôi đang tạo một tập lệnh thường xuyên sao chép tất cả các thư bị thiếu từ một tài khoản IMAP sang một tài khoản khác. Tôi muốn tránh làm cho bản sao trên mỗi bản cập nhật, vì vậy tôi phải xác định những gì trên một tài khoản và những gì là trên một tài khoản khác.

Không phải tất cả các email đều có message_id và tôi không thể thấy sự khác biệt giữa message_iduid là gì - bất kỳ ai cũng có thể cho tôi biết?

Dường như với tôi rằng message_id không thay đổi khi sử dụng imap_append - bất kỳ ai cũng có thể xác nhận điều đó?

Khi tạo một chuỗi id duy nhất cho mỗi email có nhiều lựa chọn khác hơn chỉ là id của thông điệp, tiêu đề email fx và ngày, nhưng tôi không biết phải lựa chọn: http://www.php.net/manual/en/function.imap-headerinfo.php

+0

Kiểm tra ('From',' Date' & 'Size') có thể cung cấp kết hợp độc đáo. Đáng buồn là rất ít người đã làm việc với PHP-IMAP không cập nhật các ví dụ trong Hướng dẫn sử dụng. – SparKot

+0

Có 'imap_uid()' return 'message_id'? Nó trả về những email nào không có 'message_id'? – SparKot

+0

Tôi nghĩ rằng uid thay đổi trên một số opperations .... nhưng tôi không chắc chắn ... –

Trả lời

2

theo tôi id duy nhất có thể được tạo ra như sau:

chính: thời gian kỷ nguyên của mail (từ trường ngày)

Nhưng tại cùng một thời gian sử dụng có thể nhận được nhiều mail.

chính: thời gian kỷ nguyên của thư + MailSize

Tại thời điểm cụ thể một id reciever có thể nhận được mail khác nhau của cùng một kích thước

KEY: thời gian kỷ nguyên của thư + MailSize + Recieveing ​​máy chủ IP (có thể lấy từ trường nhận được: trường)

Tại thời điểm cụ thể, id nhận thư có thể nhận được các thư khác nhau có cùng kích thước giống nhau ip cũng vậy.

khóa: thời gian epoch của thư + MailSize + Nhận IP máy chủ (có thể nhận từ trường nhận được: trường) + md5sum thư.

Khả năng sao chép cho khóa này là rất rất thấp.

Id thư thường là số nhận dạng cho thiết bị đã gửi thư hoặc có thể là thông tin khác, hoàn toàn phụ thuộc vào miền và có thể giống nhau cho các thư khác nhau và có thể không tồn tại hoàn toàn.

uid là thứ mà theo đó máy chủ imap theo dõi danh tính thư. nhưng nếu ở giữa các thư đã bị xóa hoặc di chuyển và coz của mã máy chủ lỗi, có thể là một thư khác có thể được gán với cùng một uid.

7

UID là duy nhất trong một hộp thư, nhưng không ánh xạ giữa các hộp thư, do đó không sử dụng được để đối sánh email giữa các hộp thư.

message_id được dự định là duy nhất trên toàn cầu cho tất cả email và được tạo bởi máy chủ email gửi. Nếu máy chủ được định cấu hình chính xác, mọi thư mà nó gửi sẽ có message_id và điều này có thể được sử dụng để khớp với một email trên các hộp thư. Tuy nhiên, các máy chủ được cấu hình kém có thể không gán một message_id.Trong trường hợp này, một hash của senderaddress & udate đã luôn luôn được chứng minh là duy nhất đối với tôi - nếu các email đến từ cùng một người tại cùng một micro giây, nó sẽ là cùng một thông điệp. Lưu ý - sử dụng người gửi thay vì từ - từ có thể được giả mạo dễ dàng hơn người gửi.

Các vấn đề liên quan