Ответы пользователя по тегу PHP
  • Почему при отправке данных на почте пустые сроки?

    iamlorddop
    @iamlorddop Автор вопроса
    Проблема решена. С фронта приходили данные в формате JSON, но в PHP-скрипте использовалась суперглобальная переменная $_POST, которая принимала данные в виде array, а надо было в string. $_POST была заменена на file_get_contents('php://input').

    PHP

    <?php
      ini_set('display_errors', '1');
      ini_set('display_startup_errors', '1');
      error_reporting(E_ALL);
    
      use PHPMailer\PHPMailer\PHPMailer;
      use PHPMailer\PHPMailer\SMTP;
      use PHPMailer\PHPMailer\Exception;
    
      //Load Composer's autoloader
      require 'vendor/autoload.php';
    
      $mail = new PHPMailer(true);
      $mail->SMTPOptions = array(
    
        'ssl' => array(
    
          'verify_peer' => false,
    
          'verify_peer_name' => false,
    
          'allow_self_signed' => true
    
        )
    
      );
      $mail->isSMTP(); //Send using SMTP
      $mail->Host = 'ssl://smtp.yandex.ru';  //Set the SMTP server to send through
      $mail->SMTPAuth = true;  //Enable SMTP authentication
      $mail->Username  = '****@yandex.ru'; //SMTP username
      $mail->Password  = '****';  //SMTP password
      $mail->SMTPSecure = "ssl";  //Enable implicit TLS encryption
      $mail->Port = 465;
      $mail->CharSet = "UTF-8";
      $mail->IsHTML(true);
    
      $mail->setFrom("****@yandex.ru", "Линия доставки");
      // send to
      $mail->addAddress("****@yandex.ru", "Линия доставки");
    
      $theme = '[ДАННЫЕ ИЗ ФОРМЫ ЛИНИЯ ДОСТАВКИ]';
      $mail->Subject = $theme;
    
      // letter's body
      $body = '<h1>Данные формы:</h1>';
    
      $json = file_get_contents('php://input');
    
      $data = json_decode($json, true);
    
      if (trim(!empty($data['tel']))) {
        $tel = $data['tel'];
        $body .= '<p><strong>Телефон:</strong> ' . $tel . '</p>';
      }else{
        $body .= '<p><strong>Телефон:</strong> ' . 'Данные телефона были утеряны' . '</p>';
      }
    
      $mail->Body = $body;
    
      // send
      if (!$mail->send()) {
        $message = 'Ошибка';
      } else {
        $message = 'Данные отправлены!';
      }
    
      $response = ['message' => $message];
    
      header('Content-type: application/json');
      echo json_encode($response);
    
      $mail->smtpClose();
    ?>

    Ответ написан
    Комментировать