Функция электронной почты AngularJS и PHPMailer - PullRequest
0 голосов
/ 26 сентября 2018

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

Я застрял на том, как связать AJAXк единственной кнопке отправки и файлу PHPMailer.

Здесь кнопка расположена как «Отправить по одному»:

<script type="text/ng-template" id="display">
    <td>{{data.customer_name}}</td>
    <td>{{data.customer_email}}</td>

    <td>
        <input type="checkbox" name="single_select" class="single_select" />
    </td>
    <td>
        <button type="button" class="btn btn-info btn-sm email_button" ng-click="sendData(data.customer_name)">Send Single</button>
    </td>

    <td>
        <button type="button" class="btn btn-primary btn-sm" ng-click="showEdit(data)">Edit</button>
        <button type="button" class="btn btn-danger btn-sm" ng-click="deleteData(data.id)">Delete</button>
    </td>
</script>

<script type="text/ng-template" id="edit">
    <td><input type="text" ng-model="formData.customer_name" class="form-control"  /></td>
    <td><input type="text" ng-model="formData.customer_email" class="form-control" /></td>
     <td></td>
     <td></td>
     <td>
         <input type="hidden" ng-model="formData.data.id" />
         <button type="button" class="btn btn-info btn-sm" ng-click="editData()">Save</button>
         <button type="button" class="btn btn-default btn-sm" ng-click="reset()">Cancel</button>
     </td>
</script>

Я попытался отредактировать, что делает кнопка удаления, чтобы разрешить этоотправить, но не удалось.

$scope.sendData = function sendData(){
    if(confirm("Are you sure you want to send?"))
    {
        $http({
            method:"POST",
            url:"send_mail.php",
        }).success(function(data){
            $scope.success = true;
            $scope.successMessage = data.message;
            $scope.fetchData();
        }); 
    }
}

Так выглядит приложение в данный момент, ссылка ниже:

Изображение текущего приложения

РЕДАКТИРОВАТЬ

HTML-код электронной почты находится в файле PHPMailer, мне не нужно обрабатывать его через форму.

ОРИГИНАЛЬНАЯ РАБОЧАЯ ВЕРСИЯ

PHP

<?php
 $count = 0;
 foreach($result as $row)
 {
  $count++;
  echo '
  <tr id="index_table">
   <td>'.$row["customer_name"].'</td>
   <td>'.$row["customer_email"].'</td>
   <td>
    <input type="checkbox" name="single_select" class="single_select" data-email="'.$row["customer_email"].'" data-name="'.$row["customer_name"].'" />
   </td>
   <td><button type="button" name="email_button" class="btn btn-info btn-xs email_button" id="'.$count.'" data-email="'.$row["customer_email"].'" data-name="'.$row["customer_name"].'" data-action="single">Send Single</button></td>
   </td>
   <td></td>
   <td><a href="delete.php?id=<?php echo escape($row["customer_id"]); ?>"><button type="button" name="delete" id="delete" data-row="row"+count+"" class="btn btn-danger btn-xs delete">DELETE</button></a></td>
  </tr>
  ';
 }
 ?>

AJAX (не понравился блок кода)

    $.ajax({
   url:"send_mail.php",
   method:"POST",
   data:{email_data:email_data},
   beforeSend:function(){
    $('#'+id).html('Sending...');
    $('#'+id).addClass('btn-danger');
   },
   success:function(data){
    if(data = 'ok')
    {
     $('#'+id).text('Success');
     $('#'+id).removeClass('btn-danger');
     $('#'+id).removeClass('btn-info');
     $('#'+id).addClass('btn-success');
    }
    else
    {
     $('#'+id).text(data);
    }
    $('#'+id).attr('disabled', false);
   }

  });
 });
});

Спасибо всем:)

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

В Angualr Js вы должны передать параметр в скрипт PHP.Я предполагаю, что вы не передаете значение в PHP.

var Indata = {param:'val1',.....}
$scope.sendData = function sendData(){
    if(confirm("Are you sure you want to send?"))
    {
        $http({
            method:"POST",
            url:"send_mail.php",
            params: Indata
        }).success(function(data){
            $scope.success = true;
            $scope.successMessage = data.message;
            $scope.fetchData();
        }); 
    }
}

Попробуйте этот метод,

, если вы все еще сталкиваетесь с проблемой, я думаю, что лучше, если вы поделитесь своим PHP-кодом здесь .....

0 голосов
/ 26 сентября 2018

Здесь вы отправляете параметр и в функции вы не получили

<button type="button" class="btn btn-info btn-sm email_button" ng-click="sendData(data.customer_name)">Send Single</button>

Обходной путь

$scope.sendData = function sendData(para){ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...