4

メールが「返信先」として送信されたことを認識し、それらのメールを送信および返信されたメールの1つのリストとしてグループ化するために、メールアプリケーション(Google Mailを除く)を取得する方法がわかりません。

たとえば、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);


これを2回送信すると、2つの別々のメールが届きます。2通のメールで構成される1通のメールの代わりに。
あるメールが別のメールに返信するときに、両方をグループ化する方法はありますか、それとも私は何か間違ったことをしていますか?
php mail()のドキュメントと、php mailがどのように機能するかを説明する複数のウェブページを読みましたが、それでもメールを相互に返信することができません。

お手数をおかけしますが、よろしくお願いいたします。

4

3 に答える 3

7

ほとんどのメール クライアントは、、、およびヘッダーを調べることでスレッド化を処理Message-IDIn-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

2 番目のメッセージ:

// 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 はメッセージをグループ化するアルゴリズムを採用していると思います。しかし、reply-to ヘッダーは、メッセージを返信としてグループ化することにはおそらく影響しません。

于 2011-12-03T21:47:58.377 に答える
1

ここには問題はありません。2 つの電子メールを送信すると、2 つの電子メールが受信されます。これは予期される動作です。GMail はそれらを UI のスレッドにグループ化していますが、内部では、GMail でさえこれらを 2 つの別個のメッセージとして扱います。これはすべて、Reply-Toヘッダーから完全に独立しています。

于 2011-12-03T21:47:49.547 に答える