Question

Est-il possible d'envoyer des e-mails avec la fonction wp_mail () ayant son contenu-type: multipart / alternative?

J'ai besoin d'envoyer des e-mails qui peuvent être affichés sous forme de HTML ou de texte brut selon le support interprète l'e-mail.

Toutes les suggestions sont les bienvenues!

Était-ce utile?

La solution

C'est juste là dans le wp_mail() Documentation (en dessous de Usage):

Le type de contenu par défaut est «texte / plaine» qui ne permet pas d'utiliser HTML. Vous pouvez définir le type de contenu de l'e-mail en utilisant le filtre 'WP_MAIL_CONTENT_TYPE' (voir l'exemple ci-dessous), ou en incluant un en-tête comme "Content-Type: Text / HTML". Veillez à réinitialiser 'wp_mail_content_type' à «texte / plain» après avoir envoyé votre message, cependant, car le fait de ne pas le faire pourrait entraîner des problèmes inattendus avec les e-mails de WP ou des plugins / thèmes.

(met l'accent sur la mienne)

Le 2ème exemple de la page vous montre comment le faire (l'exemple utilise text/html Mais vous devriez pouvoir utiliser votre multipart/alternative Au lieu.

Autres conseils

Il est totalement possible lorsque vous avez accès à l'instance PHPMailer.

if ($is_html) 
    add_action('phpmailer_init', 'fix_mimeheader');

// more code.

wp_mail( $to, $subject, $html_message, $headers, $attachments );

// ...

function fix_mimeheader( $phpmailer ) {
     // Generate $text_message here.
     // ...

     $phpmailer->AltBody = $text_message;
}

Le message envoyé à WP_Mail doit être votre code HTML. Vous ne devez pas non plus inclure de têtes de type de contenu. J'utilise actuellement à partir de CC et de réponse dans le plugin que j'ai créé.

Si l'e-mail est envoyé sous le nom de HTML, j'exécute l'action qui définit directement la propriété AltBody sur l'objet PHPMailer. Cela fait ensuite convertir les drapeaux appropriés pour convertir l'e-mail en un e-mail multipart / alternative.

Vous pouvez utiliser le Filtre WP_MAIL_CONTENT_TYPE, qui a été maintenant documenté dans le codex.

La documentation WP_MAIL sur la réinitialisation du type de contenu à «Text / Plain» est en quelque sorte trompeur, IMO. Puisqu'il s'agit d'un filtre, vous ne le "réinitialisez" pas vraiment. Ce que vous devez considérer dans votre filtre, c'est une logique conditionnelle pour déterminer quand vous devez utiliser la multiparte vs texte brut ou HTML:

add_filter( 'wp_mail_content_type', 'my_mail_content_type' );
function my_mail_content_type( $content_type ) {

    if( $some_condition ) {
        return 'multipart/mixed';
    } else {
        return 'text/plain';
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top