Я извлекаю адреса электронной почты из своего списка рассылки в текстовом файле. со следующим:
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 хорошо отображает все адреса электронной почты.
Пробел автоматически добавляется в конец строки. Это изменение в цикле for устраняет проблему.
$emails .= trim($file[$i]);
Вы должны закрыть цикл после:
mail ($ to, $ subject, $ message, $ headers);
}
а также
$ headers. = ‘Bcc:’. $ emails. «\ Г \ п»;
является
$ headers. = ‘Bcc:’. $ file [$ i]. «\ Г \ п»;
Таким образом, цикл будет запускать всю программу 20 раз. Не помещайте получателя в $ to, так как в противном случае отправка будет также 20 раз.
Проверено и прекрасно работает.