Cómo enviar un correo usando wp_mail y usar más de un BCC en la cabecera
Tengo esta parte del código que se encarga de obtener las variables del formulario de contacto y enviar un correo electrónico a mí y a mis compañeros de trabajo.
add_action('wp_ajax_nopriv_submit_contact_form', 'submit_contact_form');
// Enviar información desde el formulario de contacto
function submit_contact_form(){
// Si existe $_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();
}
}
Quiero añadir 4 correos electrónicos como BCC en las cabeceras.
¿Cómo puedo hacer esto correctamente? He intentado algunas variaciones al escribirlo sin éxito.

$headers puede ser un string o un array, pero puede ser más fácil de usar en forma de array. Para usarlo, agrega un string al array, comenzando con "From:", "Bcc:" o "Cc:" (nota el uso de los ":"), seguido de una dirección de correo electrónico válida.
En otras palabras:
$headers = array(
'From: bbb@example.com',
'CC: ccc@example.com',
'CC: ddd@example.com',
'BCC: eee@example.pro',
'BCC: fff@example.pro'
);
Puedes ver donde el Core analiza el string dividiéndolo en el ":":
296 list( $nombre, $contenido ) = explode( ':', trim( $header ), 2 );
297
298 // Limpieza
299 $nombre = trim( $nombre );
300 $contenido = trim( $contenido );
301
302 switch ( strtolower( $nombre ) ) {
303 // Principalmente por legado -- procesa un encabezado From: si está presente
304 case 'from':
Nota: Esto no ha sido probado pero estoy bastante seguro. No quería empezar a enviar correos a direcciones sin aviso (si es que esas direcciones incluso están activas).

Lo único que cambié para que funcione es usar $header y no $group_emails. ¡Gracias!

Observo que el procesamiento de cabeceras adicionales en wp_mail no funciona exactamente igual que el comando mail() de PHP. WP_MAIL usa cabeceras adicionales en un array unidimensional ("from:alguien@ejemplo.com"). La función mail() de PHP permite un array bidimensional, como en $header = array("from" => "alguien@ejemplo.com"). Si proporcionas un array bidimensional de cabeceras adicionales, wp_mail no procesará correctamente las cabeceras adicionales.
