Como faço para substituir o cabeçalho do ID da mensagem da função wp_mail?

4

Eu tenho uma função de notificação personalizada para nosso editor de comentários, que prefere ter todos os comentários de um artigo reunidos em seu cliente de e-mail. Para conseguir isso, estou criando um ID de mensagem personalizado para o primeiro comentário em um artigo e, em seguida, definindo-o como In-Reply-To para futuras notificações de comentários.

Isso está funcionando até certo ponto - eu posso ver os cabeçalhos adicionais no cliente de email - no entanto, a primeira mensagem está sendo criada com dois IDs de mensagem. Em outras palavras, o que eu passei para os cabeçalhos não está substituindo o que o Wordpress está gerando automaticamente. Portanto, o segmento não funciona.

Isso é um bug com o Wordpress? Eu não quero recorrer à caça da função WP_mail real e editar o código principal; e eu não tenho certeza se isso funcionaria. Isso é algo mais fundamental com a função do PHP Mail que eu não posso mudar talvez?

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

Obrigado antecipadamente.

    
por James Bruce 18.05.2012 / 11:37

2 respostas

4

Você pode filtrar o objeto $phpmailer . Algo como isso deve fazer o truque (não testado):

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

Qualquer pessoa que queira apenas atualizar o hostname dentro do messageID , que pode ser necessário para a configuração do Nginx. Wordpress documentação .

add_action('phpmailer_init', 'sender_message_id');

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