PHP Build a Basic PHP Website (2018) Adding a Basic Form SMTP with Google

I dont know what is the problem, have been searching for hours [SOLVED]

I'm keep getting this error when i try to submit the form.

Fatal error: Uncaught Error: Class 'SMTP' not found in C:\Users\admin\Desktop\פרויקט PHP\suggest.php:73 Stack trace: #0 {main} thrown in C:\Users\admin\Desktop\פרויקט PHP\suggest.php on line 73

this is the suggest.php :

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

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





//$_POST() is an array that contain all the data that was sent to the server via the "name" tags in the form > username => "what user enters"
//var_dump($_POST);

//we check if the request method is "POST" when we submit the form, and if in our $_POST array we have a value assigned to the key "submit" from the input.
if($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["submit"])) {
    //stroing the values from the form
    $username = trim(filter_input(INPUT_POST,"username",FILTER_SANITIZE_STRING));
    $email = trim(filter_input(INPUT_POST,"email",FILTER_SANITIZE_EMAIL));
    $details = trim(filter_input(INPUT_POST,"details",FILTER_SANITIZE_SPECIAL_CHARS));


    //RECAPTCHE API KEY.
    $secretKey = "6LcST70UAAAAAOYamwCOTdhGSeOqulneAprfABBp";

    //storing the response key from the server from the $_POST array after i submit the form.
    $responseKey = $_POST["g-recaptcha-response"];

    //storing the request to the API which will will do with the file_get_contens() func.
    $url = "https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$responseKey";

    //making a GET request to the api with file_get_contens
    //the $reponse var holds the API reponse which is a JSON object that store info about the status of our request, if the user has been fill the captche or not.
    $response = file_get_contents($url);



    //$response now holds a json string and we want to turn it into a PHP object to get access to the key values pairs.
    $response = json_decode($response);
    /*after we turn $reponse into a php variable, it now holds an php object that contain key-value pairs.
    if the value of the key "success" is true, then the user has been clicked the captche and get verified, if not the user isn't get verified.
    var_dump($response);
    */

    //checking if a hacker filled the address input and if the name tag have been sent to the server any values we terminate the script.
     if($_POST["address"] != "") {
        echo "HAHA CAUGHT U HACKER!";
        exit;   
    }
    //checking if any of our input field are not filled.
    if($username == "" || $email == "" || $details == "" || ($response -> success) === false || !PHPMailer::validateAddress($email)) {
        echo "Please fill in all the required Fields!";
        exit;
    }


    $emailBody = "";
    $emailBody .= "Username: $username \n";
    $emailBody .= "Email: $email \n";
    $emailBody .= "Details: $details";

    //creating the phpmailer object.



    $mail = new PHPMailer;
    $mail->isSMTP();
    //Enable SMTP debugging
    // SMTP::DEBUG_OFF = off (for production use)
    // SMTP::DEBUG_CLIENT = client messages
    // SMTP::DEBUG_SERVER = client and server messages
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;
    //Set the hostname of the mail server
    $mail->Host = 'smtp.gmail.com';
    // use
    // $mail->Host = gethostbyname('smtp.gmail.com');
    // if your network does not support SMTP over IPv6
    //Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
    $mail->Port = 587;
    //Set the encryption mechanism to use - STARTTLS or SMTPS
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    //Whether to use SMTP authentication
    $mail->SMTPAuth = true;
    //Username to use for SMTP authentication - use full email address for gmail
    $mail->Username = "emailgaming66@gmail.com";
    //Password to use for SMTP authentication
    $mail->Password = "password is here";


    $mail->setFrom('emailgaming66@gmail.com', $username);
    $mail->addAddress('emailgaming77@gmail.com');
    $mail->Subject = 'Library Suggestion from ' . $username;
    $mail->Body = $emailBody;
    if (!$mail->send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
        exit;
    } 
    header("location:thanks.php");


}

my files picture: https://gyazo.com/61b8265d02157ad50c3ff46f9ca50007

Steven Parker KRIS NIKOLAISEN

1 Answer

******* I FOUND THE SOLUTION***** This post is for all the people who got blocked with this video because Alena uses a broken code. It took me some time but after research i found the right way to do it.

<?php

//creating the emailBody
    $emailBody = "";
    $emailBody .= "Username: $username \n";
    $emailBody .= "Email: $email \n";
    $emailBody .= "Details: $details";



    //creating the phpmailer object.
    $mail = new PHPMailer(true);
    $mail->setFrom($email, $username);
    $mail->addAddress('emailgaming66@gmail.com');
    $mail->Subject = 'Library Suggestion from ' . $username;
    $mail->addReplyTo($email);
    $mail->Body = $emailBody;
    /* Use SMTP. */
    $mail->isSMTP();

//using google smtp server
    /* Google (Gmail) SMTP server. */
    $mail->Host = 'smtp.gmail.com';

    /* SMTP port. */
    $mail->Port = 587;
    $mail->SMTPDebug = 4;

    /* Set authentication. */
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = 'tls';
    $mail->Username = 'your email will go here';

    /* App password. */
    $mail->Password = 'your password will go here';
    if(!$mail->send()) {
        echo $mail->ErrorInfo;
    }
    header("location:thanks.php");

}