Как отправить электронное письмо, принимающее или отклоняющее запрос на бронирование - PullRequest
0 голосов
/ 18 июня 2019

Моя цель - иметь возможность принять или отклонить запрос клиента по электронной почте. У меня есть бэк-офис моего веб-сайта, на котором, как оказалось, каждый, кто отправил мне заявку на бронирование, после отправки получает электронное письмо с сообщением о том, что его подтверждение находится на рассмотрении, и в этот момент администратор имеет возможность принять или отклонить После того, как это действие выполнено, клиент получит электронное письмо с ответом. Прямо сейчас я попытался нажать кнопку «принять», чтобы посмотреть, сработает ли она. Прямо сейчас я получаю сообщение об ошибке, в котором говорится, что есть неверный адрес $mail->addAddress($_POST['EmailReser']);

//File listreser.php

<body style="background-color:white;">
<?php
    	$sql="select * from Reservas";
	$res=$lig->query($sql);
?>

<div class="container">
  <h1 align="center">List Reservations</h1> <br><br>      
  <table id ="tableUser"  class="table table-striped display">
    <thead>
	<tr>
    <th>Code of the reservation</th>
    <th>Name </th>
    <th>Last Name</th>
		<th>Email</th>
		<th>Telephone</th>
    <th>Date </th>
		<th>Time</th>
    <th>Number of people</th>
		<th>Message </th>
		<th>State</th>
		<th></th>
		<th></th>
      </tr>
    </thead>
    <tbody>
<?php 
while ($lin=$res->fetch_array()){ ?>
      <tr>
        <td><?php echo$lin[Cod_Reserva]; ?></td>
		<td><?php echo$lin[NomeReser]; ?></td>
		<td><?php echo$lin[ApelidoReser]; ?></td>
		<td><?php echo$lin[EmailReser]; ?></td>
		<td><?php echo$lin[TelefoneR]; ?></td>
		<td><?php echo$lin[DataR]; ?></td>
		<td><?php echo$lin[Hora]; ?></td>
		<td><?php echo$lin[NumPessoas]; ?></td>
		<td><?php echo$lin[MensagemR]; ?></td>     
 <td><a style="padding-right:12px;" href=index.php?cmd=aceitar&Cod_Reserva=<?php echo $lin["Cod_Reserva"]; ?>><img src='images/check.png' width="20" height = "20" ></a><a href=index.php?cmd=rejeitar&Cod_Reserva=<?php echo $lin["Cod_Reserva"]; ?>><img src='images/close.png' width="15" height = "15" ></td>

      </tr>
 <?php 
}
 ?>
  </tbody>
  </table>
</div>

<?php
 var_dump($_GET);
 exit();
 // $Cod_Reserva=$_REQUEST['Cod_Reserva'];  
 $Cod_Reserva=$_REQUEST['Cod_Reserva'];
	//$EmailReser = $_GET['EmailReser'];
   // $sql="select * from Reservas ";
    $sql="select EmailReser from reservas where cod_reserva = $Cod_Reserva";
	$res=$lig->query($sql);
	//$lin=$res->fetch_array();
	 while ($lin=$res->fetch_array()){ 
	require 'PHPMailer/PHPMailerAutoload.php';
	$mail = new PHPMailer;
	$mail->CharSet = "utf-8";
	$mail->Host='smtp.gmail.com';
	$mail->Port = 587;
	$mail->SMTPDebug = 2;
	$mail->SMTPAuth = true;
	$mail->SMTPSecure='tls';
	$mail->Username='email@gmail.com';
	$mail->Password='****';
	$mail->setFrom('email@gmail.com');
	$mail->addAddress($lin['EmailReser']);
	$mail->addReplyTo('email@gmail.com');
	
	$mail->isHTML(true);
	$mail->Subject='Your request has been confirmed';
	$mail->Body = "message";
	
	if(!$mail->send()){
		echo "<script>
                alert('There's been a mistake');
              </script>";
	}
	else{		
		 echo "<script>
                alert('Email was sent with success');

               </script>";
}
 
 }

?>

1 Ответ

0 голосов
/ 18 июня 2019

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

Итак, что-то вроде конца вашего кода

<a href='acceptance.php?ref=<?php echo $lin["Cod Reserva"]; ?>'>Accept</a>

, чтобы вызвать этот скрипт и передать это значение как $ _GET ['ref'], для каждой строки в вашей таблице.Извините, я не знаю, правильное ли поле для ввода, но это должен быть уникальный идентификатор для бронирования.Затем ваш сценарий accept.php извлекает остальную информацию из базы данных, чтобы получить адрес электронной почты для использования.

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

Отправка электронного письма в отдельном сценарии вместо того, чтобы тот же самый, облегчает добавление Ajax позже для пользователей, у которых включен JS.

...