4

我不知道如何让邮件应用程序(谷歌邮件除外)识别电子邮件是作为“回复”发送的,并将这些电子邮件组合在一起作为已发送和回复的电子邮件列表。

例如,使用 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 邮件的工作原理,但仍然无法让电子邮件相互回复。

感谢您的时间和帮助!

4

3 回答 3

7

Message-ID大多数邮件客户端通过检查、In-Reply-To和标头来处理线程References。在您的第一条消息中,设置一个标题,然后使用与和标题Message-ID相同的值。邮件客户端应该通过放置原始位置并将其与具有相关和标题的消息匹配来对它们进行分组。ReferencesIn-Reply-ToMessage-IDReferencesIn-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'];

// Use as a header when constructing the email
Message-Id: $message_id

第二条消息:

// Use the same value as these two headers when constructing the reply message.
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;
于 2011-12-03T21:55:11.433 回答
2

reply-to 标头用于指示应将回复发送到与 from 标头中的电子邮件地址不同的电子邮件地址。

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

于 2011-12-03T21:47:58.377 回答
1

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

于 2011-12-03T21:47:49.547 回答