Как отправить email используя wp_mail с несколькими BCC в заголовке
У меня есть часть кода, которая отвечает за получение переменных из контактной формы и отправку электронного письма мне и моим коллегам.
add_action('wp_ajax_nopriv_submit_contact_form', 'submit_contact_form');
// Отправка информации из контактной формы
function submit_contact_form(){
// Если существует $_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();
}
}
Я хочу добавить в заголовки 4 email-адреса как BCC.
Как сделать это правильно? Я пробовал несколько вариантов написания без какого-либо успеха.

$headers может быть строкой или массивом, но проще всего использовать массив. Для этого добавляйте строки в массив, начиная с "From:", "Bcc:" или "Cc:" (обратите внимание на двоеточие ":"), за которым следует корректный email-адрес.
Другими словами:
$headers = array(
'From: bbb@example.com',
'CC: ccc@example.com',
'CC: ddd@example.com',
'BCC: eee@example.pro',
'BCC: fff@example.pro'
);
Вот где в ядре WordPress происходит разбор строки путем разделения по двоеточию ":":
296 list( $name, $content ) = explode( ':', trim( $header ), 2 );
297
298 // Очистка данных
299 $name = trim( $name );
300 $content = trim( $content );
301
302 switch ( strtolower( $name ) ) {
303 // В основном для обратной совместимости - обработка заголовка From: если он присутствует
304 case 'from':
Примечание: Это не тестировалось, но я достаточно уверен. Я не хотел начинать отправку писем на адреса без предупреждения (если эти адреса вообще активны).

Единственное, что я изменил для работы - использование $header вместо $group_emails. Спасибо!

Отмечу, что обработка дополнительных заголовков в wp_mail работает не совсем так же, как в PHP-функции mail(). WP_MAIL использует дополнительные заголовки в одномерном массиве ("from:somebody@example.com"). Функция mail() в PHP позволяет использовать двумерный массив, например $header = array("from" => "somebody@example.com"). Если вы передадите двумерный массив дополнительных заголовков, wp_mail не обработает их корректно.
