2014-01-14 50 views
1

我正在开发一个小型网络邮件应用程序,我需要做的就是像Gmail所做的那样对电子邮件进行线程化。使用消息ID与php imap获取电子邮件?

我计划通过获得邮件的'references'(使用uid),然后将它们显示为一个线程来实现它。我得到的引用这样的:

$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 UIDMessage Sequence Number,那也足够了。

我想到的一个替代方案是通过使用imap_search()来搜索具有相同主题的邮件(在剥离“Re:”之后等),但我认为这不是理想的。

谁能给我帮助的指针就如何解决这个问题? 在此先感谢

回答

5

一些IMAP服务器将允许您通过消息ID(SEARCH HEADER Message-ID string)进行搜索,但许多服务器软件似乎实现这很糟糕。

一般来说,没有办法来获取通过其Message-ID头的消息。大多数客户端下载头文件(包括邮件ID)的所有邮件,保存它们,然后后处理它们,为它们匹配与其他messagesbased上ReferencesIn-Reply-To头。但是:如果您使用的是Gmail,则可以使用其extensions获取Gmail的内部线程ID,他们称之为X-GM-THRID

+0

由于最大,但有一个方法来搜索标题用PHP,就像imap_search或其它任何功能,其中i可以做'SEARCH HEADER邮件ID string'? – Aditya

+0

对不起,我知道IMAP,而不是PHP,所以我给出的一般信息应该可以转换成任何给定的库,如果它足够可扩展的话。 imap_search是我开始的地方,是的。 – Max