Cum să trimiți un email folosind wp_mail cu mai mulți destinatari BCC în antet
Am această parte de cod responsabilă pentru preluarea variabilelor din formularul de contact - și trimiterea unui email către mine și colegii mei de muncă.
add_action('wp_ajax_nopriv_submit_contact_form', 'submit_contact_form');
// Trimite informațiile din formularul de contact
function submit_contact_form(){
// Dacă există $_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();
}
}
Vreau să adaug în antete 4 emailuri ca BCC.
Cum pot face acest lucru corect? Am încercat câteva variante de scriere fără succes.

$headers poate fi un șir de caractere sau un array, dar cel mai ușor este să îl utilizați sub formă de array. Pentru a-l folosi, adăugați un șir în array, începând cu "From:", "Bcc:" sau "Cc:" (observați folosirea ":"), urmat de o adresă de email validă.
Cu alte cuvinte:
$headers = array(
'From: bbb@example.com',
'CC: ccc@example.com',
'CC: ddd@example.com',
'BCC: eee@example.pro',
'BCC: fff@example.pro'
);
Puteți vedea unde Core parsează șirul despărțindu-l după ":":
296 list( $name, $content ) = explode( ':', trim( $header ), 2 );
297
298 // Curățare
299 $name = trim( $name );
300 $content = trim( $content );
301
302 switch ( strtolower( $name ) ) {
303 // În principal pentru compatibilitate - procesează un header From: dacă există
304 case 'from':
Notă: Acest lucru nu a fost testat, dar sunt destul de încrezător. Nu am vrut să încep să trimit emailuri la adrese fără avertizare (dacă acele adrese sunt încă active).

Singurul lucru pe care l-am schimbat pentru a funcționa este folosirea lui $header și nu $group_emails. Mulțumesc!

Am observat că procesarea antetelor suplimentare în wp_mail nu funcționează exact la fel ca comanda PHP mail(). WP_MAIL folosește antete suplimentare într-un array unidimensional ("from:cineva@exemplu.com"). Funcția PHP mail() permite un array bidimensional, ca în $header = array("from" => "cineva@exemplu.com"). Dacă furnizezi un array bidimensional pentru antetele suplimentare, wp_mail nu le va procesa corect.
