Come inviare un'email usando wp_mail con più destinatari BCC nell'header
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.

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

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

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.
