Я использую следующий код:
$array = explode("\n", file_get_contents($file));
// Here $file contains n e-mail addressesforeach ($array as $value) {
$check = file_get_contents('file.txt');
$subject = 'Subject (' . $entry . ')';
$to = $value;
if ($check < $credits){
$message = '...';
}
else{
$message = '...';
}
$headers = 'MIME-Version: 1.0' . "с\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From: '...' . "\r\n";
mail($to, $subject, $message, $headers);
}
Файл читается с указанием количества адресов электронной почты. На каждое электронное письмо отправляется сообщение. Ничего не изменилось в файле.
Большую часть времени он работает абсолютно нормально и отправляет только одно сообщение на каждый адрес. Однако иногда кажется, что он заходит в бесконечный цикл и начинает отправлять несколько сообщений на одни и те же адреса.
При необходимости могу предоставить дополнительную информацию.
Я не вижу ничего, что могло бы вызвать здесь бесконечный цикл.
Файл с адресами электронной почты, вероятно, дублирует электронные письма.
Попробуйте что-то вроде этого, чтобы подтвердить:
$array = explode("\n", file_get_contents($file));
print_r(array_count_values($array));
Это должно вывести что-то вроде этого:
Array
(
[[email protected]] => 2
[[email protected]] => 1
[[email protected]] => 3
...
)
Ваш код имеет небольшую ошибку во времени для конкатенации строки.
Неправильно
$headers .= 'From: '...' . "\r\n";
Правильно
$headers = 'From: . \ R \ n";
И я не вижу ничего, что может генерировать бесконечный цикл с foreach, попробуйте ‘var_dump ($ array)’, чтобы проверить значения, которые приходят к вам.