Добавление PHPMailer без Composer - PullRequest
       6

Добавление PHPMailer без Composer

0 голосов
/ 27 августа 2018

У меня есть эта контактная форма, но я не понимаю, как мне вставить PHPMailer (без Composer) в скрипт?

Я не уверен, как правильно добавить его, чтобы он обрабатывал и отправлял форму, предупреждая пользователя. У меня нет возможности использовать composer, поэтому мне нужно загрузить PHPMailer в каталог.

<?php
function validateRecaptcha($secret, $clientResponse, $clientIp)
{
    $data = http_build_query([
        "secret"   => $secret,
        "response" => $clientResponse,
        "remoteip" => $clientIp,
    ]);

    $options = [
        "http" => [
            "header" =>
                "Content-Type: application/x-www-form-urlencoded\r\n".
                "Content-Length: ".strlen($data)."\r\n",
            "method"  => "POST",
            "content" => $data,
        ],
    ];

    $response = file_get_contents(
        "https://www.google.com/recaptcha/api/siteverify",
        false,
        stream_context_create($options)
    );

    if($response === false)
    {
        return false;
    }
    else if(($arr = json_decode($response, true)) === null)
    {
        return false;
    }
    else
    {
        return $arr["success"];
    }
}

$errors         = array();      // array to hold validation errors
$data             = array();         // array to pass back data

// validate the variables ======================================================
    // if any of these variables don't exist, add an error to our $errors array

    if (empty($_POST['firstName']))
        $errors['firstName'] = 'First Name is required.';

    if (empty($_POST['lastName']))
        $errors['lastName'] = 'Last Name is required.';

    if (empty($_POST['companyName']))
        $errors['companyName'] = 'Company Name is required.';

    if (empty($_POST['companyAddress']))
        $errors['companyAddress'] = 'Company Address is required.';

    if (empty($_POST['city']))
        $errors['city'] = 'City is required.';

    if (empty($_POST['state']))
        $errors['state'] = 'State is required.';

    if (empty($_POST['emailAddress']))
        $errors['emailAddress'] = 'Email Address is required.';

    if (empty($_POST['comment']))
        $errors['comment'] = 'Comment is required.';

    if (empty($_POST['g-recaptcha-response']))
        $errors['captcha'] = 'Captcha is required.';


// return a response ===========================================================

    // if there are any errors in our errors array, return a success boolean of false

    if(!validateRecaptcha($secret, $_POST['g-recaptcha-response'], $_SERVER["REMOTE_ADDR"]))
    {
        $errors['recaptcha'] = 'Captcha is required.';
    }

    if ( ! empty($errors)) {

        // if there are items in our errors array, return those errors
        $data['success'] = false;
        $data['errors']  = $errors;
    } else {

        // if there are no errors process our form, then return a message

        // DO ALL YOUR FORM PROCESSING HERE
        // THIS CAN BE WHATEVER YOU WANT TO DO (LOGIN, SAVE, UPDATE, WHATEVER)



        // show a message of success and provide a true success variable
        $data['success'] = true;
        $data['message'] = 'Success!';
    }

    // return all our data to an AJAX call
    echo json_encode($data);

1 Ответ

0 голосов
/ 27 августа 2018

без автозагрузчика:

<?php
//You shall use the following exact namespaces no 
//matter in whathever directory you upload your 
//phpmailer files.

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

//Now include the following following files based 
//on the correct file path. Third file is required only if you want to enable SMTP.

require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';
?>

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

<?php
$mail = new PHPMailer(true); 
?>

Хороший и простой пример вы найдете на https://github.com/PHPMailer/PHPMailer/blob/master/README.md для начала.

Надеюсь, это поможет.

...