Функция PHP mail() для всех пользователей из файла client.json

Я пытаюсь отправить электронное письмо всем пользователям, которые есть в моем файле 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/clients.json

{
    "data": {
        "username": {
            "email": "[email protected]",
        }
    }
}

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>

Как выглядит JSON, когда у него несколько адресов электронной почты?

Jonnix 26.02.2019 13:51

На первый взгляд код кажется законным (за исключением эха, которое должно быть вне цикла foreach и файла json), какие у вас проблемы? Вы настроили почтовый сервер из конфига?

ka_lin 26.02.2019 13:52
{ "data": { "username1": { "email": "[email protected]", "lastName": "jjjj" } "username1": { "email": "[email protected]", "lastname": "[email protected] } } }
Petra Jakub 26.02.2019 13:53

@ka_lin Я не знаю, как заставить это работать, поэтому после того, как я нажму «ОТПРАВИТЬ», это действие произойдет. :/ БЛАГОДАРНОСТЬ!

Petra Jakub 26.02.2019 13:55

@JonStirling Я добавил это :-)

Petra Jakub 26.02.2019 13:55

Что вы пробовали? Где ты застрял? Если вы уже преобразовали этот JSON в массив, что удерживает вас от использования этих данных?

Nico Haase 26.02.2019 13:56

@NicoHaase Я не знаю, какое действие должна иметь форма и как заставить ее работать, поэтому после того, как я нажму кнопку ОТПРАВИТЬ, это действительно произойдет.

Petra Jakub 26.02.2019 13:58

Почему бы не использовать сценарий, который фактически отправляет почту?

Nico Haase 26.02.2019 13:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
8
78
2

Ответы 2

Вы должны использовать электронную почту в цикле 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.";
  }
?>

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

@PetraJakub Я рад помочь. Помните, что в Stack Overflow принято голосовать за ответы, которые помогают, и использовать зеленую галочку для обозначения принятого ответа.

Anupam singh pal 27.02.2019 05:18

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

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

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

Другие вопросы по теме