2014-01-14 3 views
1

작은 웹 메일 응용 프로그램을 개발 중입니다. Gmail에서하는 것과 같은 전자 메일을 스레드로 보내야합니다.php imap으로 메시지 아이디를 사용하여 이메일 가져 오기?

(uid을 사용하는) 메일의 'references'을 가져 와서이를 하나의 스레드로 표시하여이를 달성하려고 계획했습니다. 나는 참조 다음과 같이 얻을 :

$inbox = imap_open("{imap.example.org:143}INBOX", "username", "password"); 
    $email_number = imap_msgno($inbox,$uid); 
    $overview = imap_fetch_overview($inbox,$email_number,0); 
    $mess = $overview[0]; 
    $refs = array_filter(explode(' ', htmlentities($mess->references))); 

$refs 배열 Message-Id's의 배열입니다, 사람이 어떻게 Message-Id에 따라 메일을 가져 오는 방법을 가르쳐 수 있습니다.

Message-Id에서 Message UID 또는 Message Sequence Number을 얻을 수 있다면 충분합니다.

내 마음에 나온 대안은 동일한 주제 ('Re :'등을 벗긴 후)를 검색하는 데 imap_search()을 사용하는 것이지만 이상적이라고 생각하지 않습니다.

누구든지 내게이 문제를 해결하는 방법에 대한 유용한 포인터를 줄 수 있습니까? 미리 감사드립니다.

답변

5

일부 IMAP 서버는 Message-ID (SEARCH HEADER Message-ID string)로 검색 할 수 있지만 많은 서버 소프트웨어가이를 제대로 구현하지 못한 것 같습니다.

일반적으로 Message-ID 헤더로 메시지를 가져 오는 방법은 없습니다. 대부분의 클라이언트는 모든 메시지의 헤더 (Message-ID 포함)를 다운로드하여 저장하고 후 처리하여 ReferencesIn-Reply-To 헤더에 기반한 다른 메시지와 일치시킵니다. 그러나 : Gmail을 사용하는 경우 extensions을 사용하여 X-GM-THRID이라고하는 Gmail의 내부 스레드 ID를 가져올 수 있습니다.

+0

고마워요. 그렇지만 imap_search 나 다른 기능인 'SEARCH HEADER Message-ID string'과 같이 PHP로 헤더를 검색 할 수있는 방법이 있습니까? – Aditya

+0

죄송합니다. PHP가 아닌 IMAP을 알고 있습니다. 따라서 확장이 가능하다면 모든 라이브러리에 번역 할 수있는 일반 정보를 제공하고 있습니다. imap_search는 제가 시작할 곳입니다. – Max