Wie überschreibe ich den Message-ID-Header der wp_mail-function?

Ich habe eine benutzerdefinierte Benachrichtigungsfunktion für unseren Kommentareditor, der es vorzieht, alle Kommentare eines Artikels in ihrem E-Mail-Client zusammenzufassen. Um dies zu erreichen, erstelle ich eine benutzerdefinierte Nachrichten-ID für den ersten Kommentar zu einem Artikel und setze dies als In-Reply-To für zukünftige Kommentarbenachrichtigungen.

Dies funktioniert in gewissem scope – ich kann die zusätzlichen Header im Mail-Client sehen – jedoch wird die erste Nachricht mit zwei Message-IDs erstellt. Mit anderen Worten, dasjenige, das ich in die Header übertrug, überschreibt NICHT das WordPress, das automatisch generiert wird. Daher funktioniert das Threading nicht.

Ist das ein Fehler mit WordPress? Ich möchte nicht auf die eigentliche WP_mail-function und das Editieren des corecodes zurückgreifen; und ich bin mir nicht sicher, ob das überhaupt funktionieren würde. Ist das etwas Grundlegender mit der PHP Mail function, die ich vielleicht nicht ändern kann?

$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: \n"; 

Danke im Voraus.

Solutions Collecting From Web of "Wie überschreibe ich den Message-ID-Header der wp_mail-function?"

Sie können das $phpmailer Objekt $phpmailer . So etwas sollte den Trick machen (nicht getestet):

 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'; } 

Jeder, der nur den Hostnamen innerhalb der messageID aktualisieren messageID , der für das Nginx-Setup benötigt wird. WordPress- Dokumentation .

 add_action('phpmailer_init', 'sender_message_id'); function sender_message_id(&$phpmailer) { $phpmailer->Hostname = 'domain.com'; }