我无法弄清楚如何获取邮件应用程序(谷歌邮件除外)以识别电子邮件是作为“回复”发送的,并将这些电子邮件组合在一起作为发送和回复电子邮件的一个列表。
例如,如果我使用的话,使用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邮件是如何工作的,仍然无法收到相互回复的电子邮件。
感谢您的时间和帮助!
答案 0 :(得分:7)
大多数邮件客户端通过检查Message-ID
,In-Reply-To
和References
标头来处理线程。在第一条消息中,设置Message-ID
标头,然后使用与References
和In-Reply-To
标头相同的值。邮件客户端应通过放置原始Message-ID
并将其与包含相关References
和In-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
标题。