用php从gmail imap获取Message-ID的值

时间:2011-11-01 15:00:37

标签: php gmail imap

我使用标准的imap函数来抓取邮件,我需要保留 跟踪要构建的Message-ID(以及引用和In-Reply-To) 线程。 我通过smtp回复邮件,保留旧主题,但在我的网络界面中没有与他人分组。如果我添加In-Reply-To标题 - 一切正常。

问题是我无法获取Message-ID,References,In-Reply-To的值(但在Web界面中它们存在)。 我尝试了不同的函数(imap_headerinfo,imap_fetchheader,imap_fetch_overview),但所有这些值都是空的。

请帮忙!

1 个答案:

答案 0 :(得分:8)

消息ID的格式如下:

<OTJMCQtXnqgMaP1rLJi-cD9IvuH+xuVndE-DoWAZB0cbdffqHdw@mail.gmail.com>

由浏览器解析为HTML标记,以下代码将以浏览器可以显示的方式输出消息ID:

$this->mbox = imap_open('{imap.gmail.com:993/imap/ssl}', $email, $password);
$headers = imap_header($this->mbox, 1);
echo htmlentities($headers->message_id);

或者如果你绝对必须使用print_r:

$this->mbox = imap_open('{imap.gmail.com:993/imap/ssl}', $email, $password);
ob_start(); 
print_r(imap_header($this->mbox, 1));
print_r(imap_fetch_overview($this->mbox, 1));
print_r(imap_fetchheader($this->mbox, 1));
echo htmlentities(ob_get_clean());