php не отправляет почту получателям

У меня есть php-скрипт, который должен отправлять почту нескольким получателям. Я хочу записать всех получателей в BCC. Адреса электронной почты извлекаются из базы данных mysql. К сожалению, он не будет отправлять письма.

Вот сценарий:

    <?php
include("/path/to/config.php"); 
$db = @new mysqli($mysql_host, $mysql_user, $mysql_pass, $mysql_db);
if (mysqli_connect_errno()) {
    die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
}

$sql = "select email from newsletter";
$recipients = array();
$result = $db->query($sql);     

if (!$result) {
  printf("Query failed: %s\n", $mysqli->error);
  exit;
}      
while($row = $result->fetch_row()) {
   $recipients[]=$row;
}

print_r($recipients);

$result->close();
$db->close();


$to = 'myemail';
$subject = $_POST["subject"];
$body = $_POST["message"];
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'Reply-To: [email protected]' . "\r\n";
$headers .= 'BCC: ' . implode(', ', $recipients) . "\r\n";

mail($to, $subject, $body, $headers);

?>

print_r возвращает правильный ответ:

Array ( [0] => Array ( [0] => [email protected] ) [1] => Array ( [0] => [email protected] ) )

person dehlen    schedule 07.07.2014    source источник
comment
Что возвращает вызов mail?   -  person Alex Turpin    schedule 08.07.2014
comment
Базовая отладка сделала бы проблему очевидной. Что показывает echo $headers?   -  person Jocelyn    schedule 08.07.2014
comment
будьте осторожны с BCC, может быть ограничение, в зависимости от почтового сервера   -  person    schedule 08.07.2014


Ответы (1)


Вы делаете массив массивов:

while($row = $result->fetch_row()) {
      ^^^^---array
   $recipients[]=$row;
                 ^^^^---add array to another array
}

Вы, вероятно, хотите что-то вроде

while($row = ...) {
  $recipients[] = $row[0];
}

поэтому вы добавляете ТОЛЬКО адреса электронной почты.

Поскольку вы взрываете свой массив массивов и вставляете полученную строку в другую строку, вы буквально получите BCC: Array, Array, Array, ....

person Marc B    schedule 07.07.2014
comment
Спасибо что сделал. Я могу принять только через 5 минут. Спасибо ;) - person dehlen; 08.07.2014