获取邮件应用程序以识别回复电子邮件php

时间:2011-12-03 21:42:37

标签: php email-headers

我无法弄清楚如何获取邮件应用程序(谷歌邮件除外)以识别电子邮件是作为“回复”发送的,并将这些电子邮件组合在一起作为发送和回复电子邮件的一个列表。

例如,如果我使用的话,使用php

$header = "From: Testing <email@mail.com>\r\n" .
                "Reply-To: email@mail.com\r\n" . 
                "X-Mailer: PHP/" . phpversion();

$to = "email@mail.com";

$message = "This is a reply";
$subject = "test 123";  
$success = mail($to, $subject, $message, $header);


发送两次,我收到两封不同的电子邮件。而不是由两封电子邮件组成的一封电子邮件。
有没有办法将它们组合在一起,因为一封电子邮件回复给另一封电子邮件,或者我做错了什么?
我已经阅读了php mail()文档和多个网页,解释了php邮件是如何工作的,仍然无法收到相互回复的电子邮件。

感谢您的时间和帮助!

3 个答案:

答案 0 :(得分:7)

大多数邮件客户端通过检查Message-IDIn-Reply-ToReferences标头来处理线程。在第一条消息中,设置Message-ID标头,然后使用与ReferencesIn-Reply-To标头相同的值。邮件客户端应通过放置原始Message-ID并将其与包含相关ReferencesIn-Reply-To标头的邮件进行匹配来对其进行分组。

第一条消息:

// Create a unique value for message id based on time, random value, and the hostname
$message_id = md5(time() . rand()) . $_SERVER['HTTP_HOST'];
Message-Id: $message_id

第二条消息:

// Use the same value as these two headers.
References: $message_id
In-Reply-To: $message_id
// Also, you should set a new unique message-id for this one
$new_message_id = md5(time() . rand()) . $_SERVER['HTTP_HOST'];
Message-ID: $new_message_id;

答案 1 :(得分:2)

回复标题用于表示应将回复发送到与from标题中的回复不同的电子邮件地址。

我认为Google使用一种算法将邮件分组在一起,如果邮件正文的一部分包含以前发送或回复邮件的一部分的文本,或者主题包含Re:并匹配另一组邮件中的主题。但回复标题可能对将邮件分组为回复没有影响。

答案 2 :(得分:1)

我认为这里没问题。发送的两封电子邮件会收到两封电子邮件。这是预期的行为。 GMail将它们组合在UI中的一个线程中,但即便如此,GMail也将它们视为两个独立的消息。这完全独立于Reply-To标题。