Я пытаюсь отправить данные формы по электронной почте с помощью phpmailer. Я застрял в этом. по какой-то причине я получаю сообщение Не удалось загрузить ресурс: сервер ответил статусом 500 (внутренняя ошибка сервера) .

У меня 2 страницы. index.php и sendit.php. index.php имеет модальное окно начальной загрузки (данные формы, которые будут отправлены на электронную почту пользователя). Пользователь заполняет форму, нажимает «Сохранить». данные сохранятся в базе данных и вызовут функцию sendMail для выполнения операции отправки. Функция sendMail выполняет ajax-вызов sendit.php и отправляет данные

Когда я жестко кодирую данные в массиве данных в sendit.php, он будет работать. когда я меняю его на $ _POST ['name'], не работает.

Нужна помощь

Заранее спасибо. код:

Это код фрагмента index.php

$('#btnSave').on('click', function() {
      // some code
      // the ajax call
      $.ajax({
          type: "POST",
          url: 'addEvent.php',
          data: thedata,
          success: function(d) {
            if (d == 'sucess') {
            
              // data to send to client email
              data = {
                "name": $('#inpName').val(),
              }
              sendMail(data); // call the function sendMail.
              resetForm(); // reset the form
            } else if (d === 'false') {
              //show some message
            },
            error: function(error) {
              alert(error);
            }
          });
      }
      
 // the sendMail function
  function sendMail(theData)
        {
          $.ajax({
            type: "POST",
            url: "sendit.php",
            data: theData
          })
        }

Вот фрагмент кода для sendit.php

<?php
//Import PHPMailer classes into the global namespace
//These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

//Load Composer's autoloader
require '../sendmail/mailer/autoload.php';

//Instantiation and passing `true` enables exceptions
$mail = new PHPMailer(true);

try {
    //Server settings
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                      //Enable verbose debug output
    $mail->isSMTP();                                            //Send using SMTP
    $mail->Host       = 'smtp.gmail.com';                     //Set the SMTP server to send through
    $mail->SMTPAuth   = true;                                   //Enable SMTP authentication
    $mail->Username   = 'myusername@gmail.com';                     //SMTP username
    $mail->Password   = 'thepassword';                               //SMTP password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         //Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
    $mail->Port       = 587;                                    //TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above

    //Recipients
    $mail->setFrom('client email adres', 'client name');
    
   
    $data=[
    lastName=>$_POST('name'),
    ];

// the message body
$body='
<!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Afspraak kaart</title>
        </head>
        <body>
            <div class="afspraak-container">
                <h2 class="afspraal-head">
                    Afspraak kaart
                </h2>
                <hr>
                <div class="afspraak-body">
                    <p>Mr/Mevr '.$data[lastName].'</p>

                    <p>Bedankt voor uw afspraak bij het Kadaster en Openbare Registers.
                    </p>
                    <p>
                        Uw afspraak gegevens:
                    </p>
                    <div class="afspraak-card">
                        <div class="afspraak-card-head">
                            24 mei 2021,10:20 AM
                        </div>
                        <ul>
                            <li>Afspraak volgnr: 101</li>
                            <li>Naam: Joel Goncalves de Freitas</li>
                            <li>Product: Meetbrief</li>
                        </ul>
                    </div>
                </div>
                <footer>

                </footer>
            </div>
        </body>
    </html>';

    //Content
    $mail->isHTML(true);                                  //Set email format to HTML
    $mail->Subject = 'test';
    $mail->Body    = $body;
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}



?>
0
joelcongo 4 Май 2021 в 23:57

1 ответ

Лучший ответ

Ошибка 500 означает, что у вас есть ошибка сервера в этом файле.

Код PHP формально верен - по крайней мере, если вы используете достаточно недавний PHP, - но, если подумать, это неверно:

 $_POST('name')

Код попытается вызвать функцию $ _POST и выйдет из строя. Это должно быть $_POST['name'].

0
LSerni 4 Май 2021 в 21:16