Come inviare un'email usando wp_mail con più destinatari BCC nell'header

2 giu 2015, 18:02:27
Visualizzazioni: 56.2K
Voti: 6

Ho questa parte di codice che si occupa di ottenere le variabili dal modulo di contatto e inviare un'email a me e ai miei colleghi di lavoro.

add_action('wp_ajax_nopriv_submit_contact_form', 'submit_contact_form'); 
// Invia informazioni dal modulo di contatto
function submit_contact_form(){

    // Se esiste $_POST['email']...
    if( isset($_POST['email']) && ($_POST['validation'] == true ) ) {

        $email = $_POST['email'];       
        $email_to = "aaaa@example.pro";
        $fullname = $_POST['fullname'];
        $headers = 'From: '. $fullname .' <'. $email .'>' . "\r\n";
        $group_emails = array(
            'bbb@example.com', 
            'ccc@example.com', 
            'ddd@example.com', 
            'eee@example.pro', 
            'fff@example.pro' 
            );
        $email_subject = "example intro: $email";
        $message = $_POST['text']; 

        if(wp_mail($group_emails,$email_subject,$message,$headers)) {
            echo json_encode(array("result"=>"complete"));
        } else {
            echo json_encode(array("result"=>"mail_error"));
            var_dump($GLOBALS['phpmailer']->ErrorInfo);
    }
        wp_die();
    }
}

Voglio aggiungere agli header 4 email come BCC.

Come posso farlo correttamente? Ho provato diverse variazioni di scrittura senza successo.

0
Tutte le risposte alla domanda 1
3

$headers può essere una stringa o un array, ma potrebbe essere più semplice usarlo nella forma di array. Per utilizzarlo, aggiungi una stringa all'array, iniziando con "From:", "Bcc:" o "Cc:" (nota l'uso dei ":"), seguita da un indirizzo email valido.

https://codex.wordpress.org/Function_Reference/wp_mail#Using_.24headers_To_Set_.22From:.22.2C_.22Cc:.22_and_.22Bcc:.22_Parameters

In altre parole:

$headers = array(
    'From: bbb@example.com', 
    'CC: ccc@example.com', 
    'CC: ddd@example.com', 
    'BCC: eee@example.pro', 
    'BCC: fff@example.pro' 
);

Puoi vedere dove il Core analizza la stringa dividendo i valori sui ":":

296  list( $name, $content ) = explode( ':', trim( $header ), 2 );
297 
298                                 // Pulizia dei dati
299                                 $name    = trim( $name    );
300                                 $content = trim( $content );
301 
302                                 switch ( strtolower( $name ) ) {
303                                         // Principalmente per legacy -- elabora un header From: se presente
304                                         case 'from':

Nota: Questo non è stato testato ma sono abbastanza sicuro. Non volevo iniziare a inviare email a indirizzi senza preavviso (se quelli sono ancora indirizzi attivi).

2 giu 2015 21:08:22
Commenti

L'unica cosa che ho cambiato per farlo funzionare è usare $header e non $group_emails. Grazie!

Kar19 Kar19
7 giu 2015 18:27:23

Puoi postare il tuo codice finale? Un aiuto sarebbe apprezzato.

WordCent WordCent
8 ago 2019 13:55:46

Noto che l'elaborazione degli header aggiuntivi in wp_mail non funziona esattamente come il comando mail() di PHP. WP_MAIL utilizza gli header aggiuntivi in un array monodimensionale ("from:qualcuno@esempio.com"). La funzione mail() di PHP consente un array bidimensionale, come in $header = array("from" => "qualcuno@esempio.com"). Se fornisci un array di header aggiuntivi bidimensionale, wp_mail non elaborerà correttamente gli header aggiuntivi.

Rick Hellewell Rick Hellewell
2 ago 2022 00:35:40