Отправить несколько электронных писем на основе заявления - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь отправить электронное письмо. Прежде всего, я получаю все адреса электронной почты и помещаю их в массивы. 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();
   }

Я понимаю, что это плохой способ отправки нескольких электронных писем, но мне удается придумать это. Любая помощь приветствуется. Или это может быть проблема с платформой хостинга? так как я использую бесплатный для тестирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...