¿Hay alguna forma de enviar correos electrónicos con formato HTML con la función wp_mail de WordPress?

35

¿Hay algún action_hook o algo similar que pueda ayudarme a lograr esto?

Intenté agregar un marcado en una variable de cadena de PHP y simplemente disparé un correo electrónico con la función wp_mail así:

$email_to = '[email protected]';
$email_subject = 'Email subject';
$email_body = "<html><body><h1>Hello World!</h1></body></html>";
$send_mail = wp_mail($email_to, $email_subject, $email_body);

¿Pero apareció como texto simple?

¿Alguna idea?

    
pregunta racl101 06.09.2011 - 23:08

3 respuestas

52

de página de códice wp_mail :

  

El tipo de contenido predeterminado es 'text / plain', que no permite el uso de HTML. Sin embargo, puede configurar el tipo de contenido del correo electrónico utilizando el filtro 'wp_mail_content_type'.

// In theme's functions.php or plug-in code:

function wpse27856_set_content_type(){
    return "text/html";
}
add_filter( 'wp_mail_content_type','wpse27856_set_content_type' );
    
respondido por el Milo 06.09.2011 - 23:23
66

Como alternativa, puede especificar el encabezado HTTP de tipo de contenido en el parámetro $ headers:

$to = '[email protected]';
$subject = 'The subject';
$body = 'The email body content';
$headers = array('Content-Type: text/html; charset=UTF-8');

wp_mail( $to, $subject, $body, $headers );
    
respondido por el Jewel 26.07.2015 - 17:01
7

No olvide eliminar el filtro de tipo de contenido después de usar la función wp_mail. Después de la denominación de respuesta aceptada, debe hacer esto después de ejecutar wp_mail:

remove_filter( 'wp_mail_content_type','wpse27856_set_content_type' );

Marque este ticket aquí: restablezca el tipo de contenido para evitar conflictos - enlace

    
respondido por el 0v3rth3d4wn 02.01.2015 - 15:25

Lea otras preguntas en las etiquetas