Я пытаюсь отправить электронное письмо. Прежде всего, я получаю все адреса электронной почты и помещаю их в массивы. 3 Различный массив ones.days2 содержит все электронные письма, у которых осталось 2 дня до deadline.days1, то же самое, вместо 2 дней его 1 day.days0, как и у других, за исключением того, что сегодня крайний срок или последний крайний срок. Судя по результатам тестирования, у меня не возникает проблем с получением электронной почты и хранением ее в массивах. Проблема возникает, когда он должен отправлять электронные письма. Он отправляет только одно письмо. Это лучшее, что мне удалось придумать:
if(isset($_POST['message-send'])){
require 'dbconfig.php';
$from = fopen("../templates/from.txt", "r") or die("Įvyko klaida");
$date = strtotime(date("Y-m-d"));
$status = '0';
$days2 = array();
$days1 = array();
$days = array();
$sql = 'SELECT clients.emailClients, tasks.endDate FROM tasks INNER JOIN clients ON tasks.idClients=clients.idClients WHERE status=?';
if ($stmt = mysqli_prepare($conn, $sql)) {
mysqli_stmt_bind_param($stmt, "i", $status);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $email, $endDate);
while (mysqli_stmt_fetch($stmt)) {
$eDate = strtotime($endDate);
$diff = $eDate - $date;
if($diff == 172800){
array_push($days2, $email);
} else if ($diff == 86400) {
array_push($days1, $email);
} else if ($diff >= 0 ) {
array_push($days, $email);
}
}
mysqli_stmt_close($stmt);
if(count($days2) > 0 || count($days1) > 0 || count($days) > 0) {
$myfile2 = fopen("../templates/template2.txt", "r") or die("Įvyko klaida");
$subject2 = fopen("../templates/subject2.txt", "r") or die("Įvyko klaida");
for($i=0; $i <= count($days2)-1; ++$i){
$to_email = $days2[$i];
$subject = fread($subject2,filesize("../templates/subject2.txt"));
$message = fread($myfile2,filesize("../templates/template2.txt"));
$headers = 'From: '.fread($from,filesize("../templates/from.txt"));
mail($to_email,$subject,$message,$headers);
}
fclose($myfile2);
fclose($subject2);
if(count($days1) > 0 || count($days) > 0 ) {
$myfile1 = fopen("../templates/template1.txt", "r") or die("Įvyko klaida");
$subject1 = fopen("../templates/subject1.txt", "r") or die("Įvyko klaida");
for($i=0; $i <= count($days1)-1; ++$i){
$to_email = $days1[$i];
$subject = fread($subject1,filesize("../templates/subject1.txt"));
$message = fread($myfile1,filesize("../templates/template1.txt"));
$headers = 'From: '.fread($from,filesize("../templates/from.txt"));
mail($to_email,$subject,$message,$headers);
}
fclose($myfile1);
fclose($subject1);
if(count($days) > 0) {
$myfile0 = fopen("../templates/template.txt", "r") or die("Įvyko klaida");
$subject0 = fopen("../templates/subject.txt", "r") or die("Įvyko klaida");
for($i=0; $i <= count($days)-1; ++$i){
$to_email = $days[$i];
$subject = fread($subject0,filesize("../templates/subject.txt"));
$message = fread($myfile0,filesize("../templates/template.txt"));
$headers = 'From: '.fread($from,filesize("../templates/from.txt"));
mail($to_email,$subject,$message,$headers);
}
fclose($myfile0);
fclose($subject0);
}
}
}
fclose($from);
mysqli_close($conn);
}
header("Location: ../index.php?messages=send");
exit();
}
Я понимаю, что это плохой способ отправки нескольких электронных писем, но мне удается придумать это. Любая помощь приветствуется. Или это может быть проблема с платформой хостинга? так как я использую бесплатный для тестирования.