web-dev-qa-db-ja.com

Wp_mail関数のMessage-IDヘッダを上書きするにはどうすればいいですか?

私は私たちのコメントエディタのためのカスタム通知機能を持っています。それは彼女のEメールクライアントで一つの記事からのすべてのコメントを一緒にすることを好みます。これを達成するために、私は記事の最初のコメントのカスタムメッセージIDを作成し、それを将来のコメント通知のためのIn-Reply-Toとして設定します。

これはある程度働いています - 私はメールクライアントの追加ヘッダを見ることができます - しかし、最初のメッセージは二つのMessage-IDで作成されています。言い換えれば、私がヘッダに渡したものは、Wordpressが自動生成しているものを上書きしていません。したがって、スレッドは機能しません。

これはWordpressのバグですか?私は実際のWP_mail関数を探してコアコードを編集することに頼りたくありません。それでもうまくいくかどうかはわかりません。これはPHP Mail機能の基本的なものなのでしょうか。

$messageIDtoCreate = $post->ID.".".time(); // post ID, and current timestamp
add_post_meta( $post->ID, 'messageID', $messageIDtoCreate);
// add to the email headers
$message_headers .= "Message-ID: <".$messageIDtoCreate."@test.com>\n";

前もって感謝します。

4
James Bruce

$phpmailerオブジェクトをフィルタリングできます。このようなことでうまくいくはずです(テストされていません)。

add_action( 'phpmailer_init', 'wpse_52555_msg_id' );

function wpse_52555_msg_id( &$phpmailer )
{
    $msg_id = get_post_meta( get_the_ID(), 'messageID', TRUE );
    '' !== $msg_id and $phpmailer->MessageID = $msg_id . '@test.com';
}
5
fuxia

messageID内のhostnameだけを更新しようとしている人は、Nginxの設定に必要かもしれません。 Wordpress ドキュメンテーション

add_action('phpmailer_init', 'sender_message_id');

function sender_message_id(&$phpmailer) {
  $phpmailer->Hostname = 'domain.com';
}
0
Ricky Boyce