Existe uma maneira de enviar e-mails formatados em HTML com a função wp_mail do Wordpress?

35

Existe um action_hook ou algo similar que possa me ajudar a alcançar isso?

Eu tentei adicionar marcação em uma variável de string PHP e apenas enviei um email com a função wp_mail da seguinte forma:

$email_to = 'someaddress@gmail.com';
$email_subject = 'Email subject';
$email_body = "<html><body><h1>Hello World!</h1></body></html>";
$send_mail = wp_mail($email_to, $email_subject, $email_body);

Mas apareceu como texto simples?

Alguma idéia?

    
por racl101 06.09.2011 / 23:08

3 respostas

52

da página do códice do wp_mail :

  

O tipo de conteúdo padrão é 'text / plain', que não permite o uso de HTML. No entanto, você pode definir o tipo de conteúdo do email usando o 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' );
    
por Milo 06.09.2011 / 23:23
66

Como alternativa, você pode especificar o cabeçalho HTTP Content-Type no parâmetro $ headers:

$to = 'sendto@example.com';
$subject = 'The subject';
$body = 'The email body content';
$headers = array('Content-Type: text/html; charset=UTF-8');

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

Não se esqueça de remover o filtro do tipo de conteúdo depois de usar a função wp_mail. Após a nomeação de resposta aceita, você deve fazer isso depois que o wp_mail for executado:

remove_filter( 'wp_mail_content_type','wpse27856_set_content_type' );

Verifique este ticket aqui - Redefina o tipo de conteúdo para evitar conflitos - enlace

    
por 0v3rth3d4wn 02.01.2015 / 15:25