我正在使用标准的IMAP函数来获取PHP中的电子邮件.我需要跟踪构建线程的每条消息的Message-ID(References和In-Reply-To).一旦部署了这个系统,我希望用户能够回复他们邮件客户端中的消息,向线程添加消息,但在我的网络界面中,回复无法附加到原始帖子,因为我没有In-Reply-To来自任何电子邮件标头的ID.我会使用In-Reply-ToID将他们的回复附加到我发给他们的新帖子的通知中,但我不能,因为我无法获取ID.如果我有一个In-Reply-To标题,可以对消息进行分组,因为有一个ID连接它们的线程.
此外,我希望能够回复用户发送到服务器电子邮件地址的任何消息,如果他们的提交有错误或类似的话,在这种情况下我需要Message-ID他们的消息,以便我可以In-Reply-To我发送回复邮件的ID.
我无法获得价值Message-ID,In-Reply-To即使它们确实有价值.(转到Gmail中的任何消息,点击回复按钮旁边的下拉菜单,点击"显示原始内容",您会看到我调用IMAP功能时缺少的所有标题信息实际上都存在,如虽然Gmail不想将这些信息提供给IMAP服务器.)
我已经尝试了各种来电,理应获得头信息(imap_headerinfo,imap_fetchheader,imap_fetch_overview),但它们都返回稀疏值的数组中的头信息,我不需要.执行后
$this->mbox = imap_open('{imap.gmail.com:993/imap/ssl}', $email, $password);
Run Code Online (Sandbox Code Playgroud)
我可以通过任何这些调用从标题中获得一些有用的值:
imap_header($this->getImapStream(), "1");
imap_fetch_overview($this->getImapStream(), "1");
imap_fetchheader($this->getImapStream(), "1");
Run Code Online (Sandbox Code Playgroud)
我能看到的东西一样Subject,To,Reply-To,和其他标头值,而且都是准确的,但是Message-ID,References,In-Reply-To,和其他有价值的头信息是基本不存在的(而,代表他们的数组的值是在任何情况下空).
我几乎可以保证问题不在于代码本身,因为我可以在头文件中看到一些值,并且我可以成功检索消息体; 就像谷歌正在过滤我能看到的标题信息一样.
你可能会注意到我在这个页面上有完全相同的问题,但有人建议我提出自己的问题,这就是我所做的.
如果有人可以给我一种方法来回复来自我的服务器的消息而无需检索Message-ID我正在回复的消息,那就同样可怕了.
我Message-ID在我非常大的收件箱中列出了每条消息,从我所看到的,大约40%的ID实际显示出来.如果我再次运行相同的测试,相同的消息将保留其Message-IDs.我正在搜索显示的消息中的模式,Message-ID但是有非常强有力的证据表明消息类型之间存在非模式.
实际上,每条消息都有一个Message-ID(我已经验证了这个消息,即使其ID没有显示IMAP查询的消息),但IMAP功能只显示某些消息的ID.