Domanda

È possibile inviare e-mail con la funzione WP_Mail () con il suo tipo di contenuto: multipart/alternativa?

Devo inviare e -mail che possono essere mostrate come HTML o testo normale a seconda di quale mezzo interpreta l'e -mail.

Eventuali suggerimenti sono benvenuti!

È stato utile?

Soluzione

È proprio lì nel wp_mail() documentazione (sotto Utilizzo):

Il tipo di contenuto predefinito è "testo/semplice" che non consente l'utilizzo di HTML. È possibile impostare il tipo di contenuto dell'e-mail utilizzando il filtro "WP_Mail_Content_Type" (vedere Esempio sotto) o includendo un'intestazione come "Content-Type: Text/HTML". Fai attenzione a reimpostare "wp_mail_content_type" di nuovo su "testo/semplice" dopo aver inviato il messaggio, tuttavia, perché non riuscire a farlo potrebbe portare a problemi inaspettati con e-mail da WP o plugin/temi.

(enfasi la mia)

Il secondo esempio nella pagina mostra come farlo (l'esempio usa text/html Ma dovresti essere in grado di usare il tuo multipart/alternative invece.

Altri suggerimenti

È totalmente possibile quando hai accesso all'istanza 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;
}

Il messaggio inviato a WP_Mail dovrebbe essere il tuo codice HTML. Inoltre, non dovresti includere alcuna intestazione di tipo di contenuto. Attualmente uso da, CC e risposta al plugin che ho fatto.

Se l'e -mail viene inviata come HTML, eseguo l'azione che imposta direttamente la proprietà AltBody sull'oggetto PHPMailer. Questo quindi fa sì che le flag appropriate convertino l'e -mail in un'e -mail multipart/alternativa.

Puoi usare il Filtro WP_Mail_Content_Type, che ora è stato documentato nel codice.

La documentazione WP_Mail sul ripristino del tipo di contenuto in "testo/pianura" è un po 'fuorviante, IMO. Dal momento che si tratta di un filtro, non lo "reimposti" davvero. Quello che devi considerare nel filtro è una logica condizionale per determinare quando è necessario utilizzare MultiPart vs. Text semplice o 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';
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top