2013-02-15 4 views
7

IMAP 계정의 각 이메일에 대해 고유 한 ID 문자열을 계산하려면 어떻게해야합니까?PHP에서 IMAP로 고유 한 이메일 ID 받기

하나의 IMAP 계정에서 누락 된 메일을 다른 계정으로 자주 복사해야하는 스크립트를 만들고 있습니다. 각 업데이트마다 중복되는 것을 피하기 위해 한 계정에 무엇이 있는지와 다른 계정에 무엇이 있는지를 식별해야합니다.

모든 이메일에 message_id이있는 것은 아니며 message_iduid의 차이점을 알 수 없습니다. 누구에게 말해 줄 수 있습니까?

imap_append을 사용할 때 message_id이 변경되지 않은 것 같습니다. 누구든지 확인할 수 있습니까?

단지 메시지 ID, FX 이메일 제목과 날짜보다 많은 옵션이 각 이메일에 대한 고유 ID 열을 생성하지만, 내가 선택 해야할지하지 않는 경우 : http://www.php.net/manual/en/function.imap-headerinfo.php

+0

('From','Date' &'Size')를 검사하면 고유 한 조합이 생길 수 있습니다. 안타깝게도 PHP-IMAP을 사용하여 작업 한 사람은 매뉴얼의 예제를 업데이트하지 않습니다. – SparKot

+0

'imap_uid()'는'message_id'를 리턴합니까? 'message_id'가없는 이메일은 어떻게 되나요? – SparKot

+0

나는 약간의 opperations에 대한 uid 변경을 생각합니다 ....하지만 확실하지 않습니다 ... –

답변

2

날에 따라

키 : 고유 ID는 다음과 같이 생성 할 수 있습니다 (날짜 필드에서) 메일의 시대 시간

을하지만 동시에 사용자가 여러 메일을 얻을 수 있습니다.

키 메일의 신기원 시간 + MailSize + Recieveing ​​서버 : 특정 시간에 메일 + MailSize

의 시대 photography 시간 리시버 ID는 같은 크기

KEY의 개의 다른 메일을받을 수 있습니다 IP (받는 사람 : 필드에서 가져올 수 있음)

수신자 ID는 동일한 크기의 다른 메일을 수신 할 수 있습니다 또한 ip.

키 : 획기적으로 메일 시간 + MailSize + 수신 서버 IP (받는 사람 : 필드에서 얻을 수 있음) + 메일의 md5sum.

이 키의 중복 가능성은 매우 낮습니다.

메시지 ID는 일반적으로 메시지를 보낸 장치의 식별자이거나 다른 것일 수 있습니다. 도메인에 완전히 의존하며 다른 메일에 대해 동일 할 수 있으며 아마도 존재하지 않을 수도 있습니다.

uid는 메일 계정을 추적하는 imap 서버입니다. 하지만 메일 사이에 삭제되거나 옮겨 지거나 버그가있는 서버 코드가 있으면 다른 메일이 동일한 uid로 할당 될 수 있습니다.

7

UID는 사서함 내에서 고유하지만 사서함간에 매핑되지 않으므로 사서함간에 전자 메일을 일치시키는 데는 적합하지 않습니다.

message_id는 모든 이메일에 대해 전역 적으로 고유하며 보내는 이메일 서버에서 생성됩니다. 서버가 올바르게 구성되어 있으면 보내는 모든 메시지에 message_id가 있으며이 메시지를 사용하여 여러 사서함간에 전자 메일을 일치시킬 수 있습니다. 그러나 잘못된 서버는 message_id를 할당하지 않을 수 있습니다.이 경우 보낸 사람 주소 & 우화의 해시는 항상 나에게 고유 한 것으로 판명되었습니다. 이메일이 동일한 사람의 동일한 마이크로 초에서 나온 경우 동일한 메시지가됩니다. 참고 - 보낸 사람이 아닌 보낸 사람을 사용하면 보낸 사람보다 쉽게 ​​스푸핑 될 수 있습니다.