Не удается получить данные, когда форма отправляется с использованием phpmailer, а затем пересылается - PullRequest
1 голос
/ 27 мая 2019

Простой PHP-скрипт для захвата ввода формы пользователя и отправки мне электронного письма.

Пустая форма отправляется с использованием скрипта phpmailer, т.е. получения электронной почты без данных, заполненных пользователем.Нет ошибки SMTP, страница отправляется и перенаправляется на новую страницу.Просьба, пожалуйста, помочь.Иногда полученная электронная почта также содержит заполненные пользователем данные, не знаю почему?

<?php

date_default_timezone_set('Etc/UTC');
 use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require './PHPMailer/src/PHPMailer.php';
require './PHPMailer/src/SMTP.php';
require './PHPMailer/src/Exception.php';



try {
$mail = new PHPMailer(true);

    $mail->SMTPDebug = 0;
     $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';  
    $mail->SMTPAuth = true;  
    $mail->Username = "XXXXX@gmail.com";  
    $mail->Password = "XXXXX";  
    $mail->SMTPSecure = 'tls';  
    $mail->Port = 587;  



    $mail->setFrom('XXXXX@gmail.com', 'Mr Singh');
    $mail->addReplyTo('XXXXX@gmail.com', 'Mr Singh');
    $mail->addAddress('XXXXX@gmail.com', 'Mr Singh');



    $mail->Subject = 'PHPMailer Exceptions test';
$mail->isHTML(false);


        $mail->Body = <<<EOT
Email: {$_POST['name']}
Email: {$_POST['email']}
Mobile: {$_POST['mobile']}
EOT;

    $mail->send();
    header("Refresh:1; contact.html");
} catch (Exception $e) {
    echo $e->errorMessage();  
} catch (\Exception $e) { //The leading slash means the Global PHP Exception class will be caught
    echo $e->getMessage();  
}

?>

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Спасибо, сохранил только если заявление и его работа сейчас.Возможность использования Gmail SMTP-сервисов.Для Gmail пришлось включить менее безопасное приложение в Gmail и один раз сменить пароль.

<?php

date_default_timezone_set('Etc/UTC');

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require './PHPMailer/src/PHPMailer.php';
require './PHPMailer/src/SMTP.php';
require './PHPMailer/src/Exception.php';


if (isset($_POST['submit'])) 
{  

    $mail = new PHPMailer(true);

    $mail->SMTPDebug = 0;

    //Set the hostname of the mail server
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com'; // Which SMTP server to use.
    $mail->SMTPAuth = true; // Whether you need to login. This is almost always required.
    $mail->Username = "XXXXX@gmail.com"; // Your Gmail address.
    $mail->Password = "XXXXX"; // Your Gmail login password or App Specific Password.
    $mail->SMTPSecure = 'tls'; // Which security method to use. TLS is most secure.
    $mail->Port = 587; // Which port to use, 587 is the default port for TLS security.


    //Set who the message is to be sent from
    $mail->setFrom('XXXXXgmail.com', 'Mr Singh');
    //Set an alternative reply-to address
    $mail->addReplyTo('XXXXX@gmail.com', 'Mr Singh');
    //Set who the message is to be sent to
    $mail->addAddress('YYYYY@gmail.com', 'Mr Singh');


    $mail->Subject = 'Customer Enquiry Form';


    $mail->isHTML(false);


        $mail->Body = <<<EOT
        Email: {$_POST['name']}
        Email: {$_POST['email']}
        Mobile: {$_POST['mobile']}

EOT;

        $mail->send();
        header("Refresh:1; contact.html");


}  else {
    echo "Your form is not submitted yet please call for booking";
}
?>

HTML Code

<form class="form-horizontal" id="submit" action="PHPMailer.php" method="post">
.......    ** HTML CODE of Form  .......
<input value="submit" name="submit" type="submit">
0 голосов
/ 27 мая 2019

Если этот скрипт когда-либо запускается на всех , он отправит электронное письмо, независимо от того, были ли какие-либо данные отправлены или нет. Оберните его в условие, при котором сообщение отправляется только в том случае, если данные были отправлены, что-то вроде:

if (isset(_POST['email'])) {
   try {
        $mail = new PHPMailer(true);
...

Вы можете быть более внимательны к этой проверке, например, проверить, был ли введен действительный адрес электронной почты, что другие поля содержат то, что вы ожидаете, и так далее, но вы должны получить общее представление.

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