Функция PHP mail () для всех пользователей из файла clients.json - PullRequest
0 голосов
/ 26 февраля 2019

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

<?php 
  $sData = file_get_contents('data/clients.json');
  $jData = json_decode($sData);
  if ($jData == null) {
    echo 'System update';
  }

  $sEmailsOfAllUsers = $jData->data->$sUserName->email;
  $sMessage = $_POST['txtEmailToAllUsers'];

  foreach ($jData->data as $sUserName) {
      $from = "PETRABANK";
      $to = $sEmailsOfAllUsers;
      $subject = "Email to all users";
      $headers = "From:" . $from;
      mail($to, $subject, $sMessage, $headers);
      echo "The email message was sent to all users.";
  }
?>

Файл JSON data / clients.json

{
    "data": {
        "username": {
            "email": "petrajakubcova@hotmail.com",
        }
    }
}

HTML-форма

<h3>Send email to all users</h3>
  <form id="sEmailToAllUsers" action="????" method="POST">
    <input name="txtEmailToAllUsers" id="txtEmailToAllUsers" type="text">
    <button>SEND</button>
  </form>

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Под "действием" в форме вы должны ссылаться на файл, который будет обрабатывать данные, поэтому в этом случае я предполагаю, что вы должны просто сослаться на файл, в котором вы находитесь:

<form id="sEmailToAllUsers" action="/yourfile.php" method="POST">

Убедитесь, что вы не поместили файл JSON.Я сам новичок: D Но я надеюсь, что это поможет!

0 голосов
/ 26 февраля 2019

Вы должны использовать электронную почту в цикле foreach самостоятельно, чтобы отправлять почту всем клиентам за один раз, или вам нужно получать всю электронную почту в другом цикле и объединять их через запятую ","

<?php 
  $sData = file_get_contents('data/clients.json');
  $jData = json_decode($sData);
  if ($jData == null) {
    echo 'System update';
  }

  $sMessage = $_POST['txtEmailToAllUsers'];

  foreach ($jData->data as $sUserName) {
      $from = "PETRABANK";
      $to = $sUserName->username->email;
      $subject = "Email to all users";
      $headers = "From:" . $from;
      mail($to, $subject, $sMessage, $headers);
      echo "The email message was sent to all users.";
  }
?>

Этот код поможет вам отправлять письма всем клиентам по одному.

...