I suspect you implemented the hook something like this:
function wp_set_html_mail_content_type() {
return 'text/html';
}
add_filter( 'wp_mail_content_type', 'wp_set_html_mail_content_type' );
More info: https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_mail_content_type
Did you need to reset the content type at a later point?
** UPDATE: try intercept it with a global variable:
function xxx_wp_email_content_type() {
if($GLOBALS["use_html_content_type"]){
return 'text/html';
}else{
return 'text/plain';
}
}
add_filter( 'wp_mail_content_type', 'xxx_wp_email_content_type' );
function xxx_wp_retrieve_password_message( $content, $key ) {
ob_start();
$GLOBALS["use_html_content_type"] = TRUE;
$email_subject = xxx_wp_retrieve_password_title();
include( 'templates/email_header.php' );
include( 'templates/lost_password_email.php' );
include( 'templates/email_footer.php' );
$message = ob_get_contents();
ob_end_clean();
return $message;
}
add_filter( 'retrieve_password_message', 'xxx_wp_retrieve_password_message', 10, 2 );