Existe-t-il un moyen d'envoyer des courriers électroniques au format HTML avec la fonction wp_mail de Wordpress?

35

Existe-t-il un crochet d'action ou quelque chose de similaire qui pourrait m'aider à atteindre cet objectif?

J'ai essayé d'ajouter du balisage dans une variable chaîne PHP et je viens de lancer un courrier électronique avec la fonction wp_mail comme suit:

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

Mais cela s’affiche en texte clair?

Des idées?

    
posée racl101 06.09.2011 - 23:08
la source

3 réponses

52

à partir de la page de codex wp_mail :

  

Le type de contenu par défaut est 'text / plain', ce qui n'autorise pas l'utilisation de HTML. Cependant, vous pouvez définir le type de contenu de l'e-mail à l'aide du filtre "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' );
    
réponse donnée Milo 06.09.2011 - 23:23
la source
66

Vous pouvez également spécifier l'en-tête HTTP Content-Type dans le paramètre $ 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 );
    
réponse donnée Jewel 26.07.2015 - 17:01
la source
7

N'oubliez pas de supprimer le filtre de type de contenu après avoir utilisé la fonction wp_mail. Après avoir nommé la réponse, vous devriez le faire après avoir exécuté wp_mail:

remove_filter( 'wp_mail_content_type','wpse27856_set_content_type' );

Vérifiez ce ticket ici - Réinitialisez le type de contenu pour éviter les conflits - enlace

    
réponse donnée 0v3rth3d4wn 02.01.2015 - 15:25
la source

Lire d'autres questions sur les étiquettes