使用php imap使用消息ID获取电子邮件?

时间:2014-01-14 21:40:14

标签: php email gmail imap gmail-imap

我正在开发一个小型的网络邮件应用程序,我需要做的就是像Gmail那样处理电子邮件。

我计划通过获取邮件的“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 UID获得Message Sequence NumberMessage-Id也足够了。

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

任何人都可以给我一些有用的指示,如何解决这个问题? 提前致谢

1 个答案:

答案 0 :(得分:5)

有些IMAP服务器允许您按消息ID(SEARCH HEADER Message-ID string)进行搜索,但很多服务器软件似乎都很难实现这一点。

通常,无法通过其Message-ID标头获取消息。大多数客户下载所有邮件的标头(包括邮件ID),存储它们,然后对其进行后期处理,将它们与基于ReferencesIn-Reply-To标头的其他邮件进行匹配。但是:如果您使用的是Gmail,则可以使用其extensions获取Gmail的内部主题ID,并将其称为X-GM-THRID