email — отправка только почты BCC в Stack Overflow

Я извлекаю адреса электронной почты из своего списка рассылки в текстовом файле. со следующим:

clearstatcache();

$file = file("test.txt");

for ($i = 0; $i < 20; $i++) {
$emails .= $file[$i];
}

Как вы можете видеть, я сохранил их в $ электронных письмах. и если я отправляю электронные письма $, я получаю перечисленные электронные письма:
info@example.com, test@mydomain.com, admin@domain.com и т. д.

Теперь для отправки BCC:

// recipient
$to  = '';

// subject
$subject = 'The subject is here';

// message
$message = 'The body of the email is here';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'From: John Doe <info@example.com>' . "\r\n";
$headers .= 'Bcc: '.$emails . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);

Письмо не отправляется в список, только на info@example.com — так что это не работает, и происходит что-то неожиданное — по какой-то странной причине 20 писем из цикла for перечислены в верхней части тела письма когда получено info@example.com

Когда я пытаюсь ввести вручную, он работает отлично. поэтому приведенный ниже код работает, но ручной ввод контрпродуктивен тому, чего я пытаюсь достичь.

$test = "info@example.com, test@mydomain.com, admin@domain.com,";

// recipient
$to  = '';

// subject
$subject = 'The subject is here';

// message
$message = 'The body of the email is here';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'From: John Doe <info@example.com>' . "\r\n";
$headers .= 'Bcc: '.$test . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);

Таким образом, похоже, что проблема в переменной, но я не могу понять, почему она не работает, потому что $ emails хорошо отображает все адреса электронной почты.

1

Решение

Пробел автоматически добавляется в конец строки. Это изменение в цикле for устраняет проблему.

$emails .= trim($file[$i]);
0

Другие решения

Вы должны закрыть цикл после:
mail ($ to, $ subject, $ message, $ headers);
}
а также
$ headers. = ‘Bcc:’. $ emails. «\ Г \ п»;
является
$ headers. = ‘Bcc:’. $ file [$ i]. «\ Г \ п»;

Таким образом, цикл будет запускать всю программу 20 раз. Не помещайте получателя в $ to, так как в противном случае отправка будет также 20 раз.
Проверено и прекрасно работает.

0