¿Cómo invalido el encabezado de ID de mensaje de la función wp_mail?

4

Tengo una función de notificación personalizada para nuestro editor de comentarios, que prefiere tener todos los comentarios de un artículo en su cliente de correo electrónico. Para lograr esto, estoy creando un ID de mensaje personalizado para el primer comentario de un artículo, y luego lo configuro como In-Reply-To para futuras notificaciones de comentarios.

Esto está funcionando en cierta medida. Puedo ver los encabezados adicionales en el cliente de correo. Sin embargo, el primer mensaje se está creando con DOS ID de mensaje. En otras palabras, el que pasé a los encabezados NO está reemplazando al Wordpress autogenerador. Por lo tanto, el enhebrado no funciona.

¿Es este un error con Wordpress? No quiero recurrir a buscar la función WP_mail real y editar el código central; y no estoy seguro de que incluso funcionaría. ¿Es esto algo más fundamental con la función de correo PHP que quizás no pueda cambiar?

$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";

Gracias de antemano.

    
pregunta James Bruce 18.05.2012 - 11:37

2 respuestas

4

Puedes filtrar el objeto $phpmailer . Algo como esto debería hacer el truco (no probado):

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';
}
    
respondido por el fuxia 18.05.2012 - 14:40
0

Cualquier persona que busque actualizar el nombre de host dentro de messageID , que puede ser necesario para la configuración de Nginx. Wordpress documentación .

add_action('phpmailer_init', 'sender_message_id');

function sender_message_id(&$phpmailer) {
  $phpmailer->Hostname = 'domain.com';
}
    
respondido por el Ricky Boyce 19.07.2017 - 03:25

Lea otras preguntas en las etiquetas