Я извлекаю адреса электронной почты из своего списка рассылки в текстовом файле. со следующим:
clearstatcache();
$file = file("test.txt");
for ($i = 0; $i < 20; $i++) {
$emails .= $file[$i];
}
Как вы можете видеть, я сохранил их в $ электронных письмах. и если я отправляю электронные письма $, я получаю перечисленные электронные письма:
[email protected], [email protected], [email protected] и т. д.
Теперь для отправки 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 <[email protected]>' . "\r\n";
$headers .= 'Bcc: '.$emails . "\r\n";
// Mail it
mail($to, $subject, $message, $headers);
Письмо не отправляется в список, только на [email protected] — так что это не работает, и происходит что-то неожиданное — по какой-то странной причине 20 писем из цикла for перечислены в верхней части тела письма когда получено [email protected]
Когда я пытаюсь ввести вручную, он работает отлично. поэтому приведенный ниже код работает, но ручной ввод контрпродуктивен тому, чего я пытаюсь достичь.
$test = "[email protected], [email protected], [email protected],";
// 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 <[email protected]>' . "\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 раз.
Проверено и прекрасно работает.