В этой библотеке я полный новичок, мне про нее сказали меньше суток назад, помогите плз разобраться.
Сайт без cms, простейший - кодом несколько страниц и должна быть одна форма, что отправляет имя и телефон на почту, должна быть не на ajax, а с редиректом на страницу "спасибо" - такое задание, прямое, не гибкое.
<form id="order_form" class="layout-form" method="POST" action="email.php" >
<div class="form-group-container">
<div class="form-group">
<label for="username"></label>
<input class="top-screen-input" id="username" name="username" type="text" placeholder="Ваше имя" required>
</div>
<div class="form-group">
<label for="userphone"></label>
<input class="top-screen-input" name="userphone" id="userphone" type="tel" placeholder="Ваш телефон" required>
</div>
<button type="submit" class="top-screen-button">Забронировать</button>
</div>
</form>
Брал сначала сниппет из другого проекта с функцией mail(), которая там работала,но там было уже настроено смтп, а тут нет. Вот скачал phpmailer, сначала последнюю версию PHPMailer-master, и попробовал вот такой способ - это сам файл email.php
<?php
//Import PHPMailer classes into the global namespace
//These must be at the top of your script, not inside a function
require 'phpmailer/PHPMailer.php';
require 'phpmailer/SMTP.php';
require 'phpmailer/Exception.php';
//get data from form
$name = $_POST['username'];
$phone = $_POST['userphone'];
// preparing mail content
$messagecontent ="Name = ". $name . "<br>Phone = " . $phone . "<br>";
//Create an instance; 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.yandex.ru'; //Set the SMTP server to send through
$mail->SMTPAuth = true; //Enable SMTP authentication
$mail->Username = 'shop.****@yandex.ru'; //SMTP username
$mail->Password = 'пароль внешнего приложения'; //SMTP password
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable implicit TLS encryption
$mail->Port = 587; //пробовал и 465, закомментировав предыдущую строку с тсл
//Recipients
$mail->setFrom('shop.****@yandex.ru', 'Mailer');
$mail->addAddress('shop.****@yandex.ru', 'Joe User'); //Add a recipient
$mail->addAddress('shop.****@yandex.ru'); //Name is optional
$mail->addReplyTo('shop.****@yandex.ru', 'Information');
$mail->addCC('shop.****@yandex.ru');
$mail->addBCC('shop.****@yandex.ru');
//Content
$mail->isHTML(true); //Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = $messagecontent;
$mail->send();
header('Location: https://example.com/thank-you.html');
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
Просто ошибка, ни на почту не приходит,ни на странице обработчика ничего. И раскомментировал строку,чтоб в консоль показывало - ничего не показывало.
Нашел более старый способ, в котором требовался файл PHPMailerAutoload, в послденей версии из библиотеки его нету, скачал PHPMailer-5.2-stable, предпоследнюю, способ вот такой
require_once 'phpmailer/PHPMailerAutoload.php';
//get data from form
$name = $_POST['username'];
$phone = $_POST['userphone'];
// preparing mail content
$messagecontent ="Name = ". $name . "<br>Phone = " . $phone . "<br>";
//Create an instance; 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.yandex.ru'; //Set the SMTP server to send through
$mail->SMTPAuth = true; //Enable SMTP authentication
$mail->Username = 'shop.***@yandex.ru'; //SMTP username
$mail->Password = 'пароль внешнего приложения'; //SMTP password
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable implicit TLS encryption
$mail->Port = 587; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
//Recipients
$mail->setFrom('shop.****@yandex.ru', 'Mailer');
$mail->addAddress('shop.***@yandex.ru', 'Joe User'); //Add a recipient
$mail->addAddress('shop.****@yandex.ru'); //Name is optional
$mail->addReplyTo('shop.***@yandex.ru', 'Information');
$mail->addCC('shop.*****@yandex.ru');
$mail->addBCC('shop.****@yandex.ru');
//Content
$mail->isHTML(true); //Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = $messagecontent;
$mail->send();
header('Location: https://example.com/thank-you.html');
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
Пароль и юзернейм точно правильный, с портами тсл и ссл игрался, все равно ошибка, что через аутолоад,что через три отдельных файла. Мне надо без композера, думаю есть же рабочие способы с помощью архива.
Может я вообще ошибаюсь в очевидных вещах?