Я обновил этот код с помощью PHPMailer. Теперь код работает и отправляет через форму на любой адрес электронной почты, который я хочу, если у меня есть правильная настройка хоста в PHP. Это здорово. Но это не направляет меня на мою страницу с благодарностью: header("Location: http://strawberryletting.co.uk/new_form/thank_you.html"); отправляет электронное письмо в порядке вместе с правильной информацией, но как только пользователь выбирает submit button, они остаются на странице PHP с большим количеством письменного жаргона. См. Обновленный PHP ниже:
PHP:
<?php
error_reporting(-1);
ini_set('display_errors', 'On');
set_error_handler("var_dump"); // Look for errors and report errors - if there are any
$name = $_POST["name"]; // Declare variables - inputted from HTML form
$email = $_POST["email"];
$tel = $_POST["tel"];
$msg = $_POST["msg"];
require("PHPMailer/src/PHPMailer.php"); // Call files required for the phpmailer code from our folder directory
require("PHPMailer/src/Exception.php");
require("PHPMailer/src/SMTP.php");
$mail = new PHPMailer\PHPMailer\PHPMailer(true);
$mail->isSMTP(); // Simple mail transfer protocol
$mail->SMTPDebug = 2; // 1 - 4 use 2 - most useful response
$mail->SMTPAuth = true; // enable the SMTP authentication
$mail->Host = 'smtp.live.com'; // SMTP server and backup server
$mail->Username = '[email protected]';
$mail->Password = 'PASSWORD';
$mail->SMTPSecure = 'tls'; // enable encryption - accepts TLS also
$mail->Port = 587; // port to connect - SSL 465 TLS TLS 587 - likely port numbers - 25, 465 or 587
$mail->setFrom('[email protected]', 'Billy Farroll'); // This is where the email will come from
$mail->addAddress('[email protected]','Billy Farroll'); // This is where the email will be sent to
$mail->addReplyTo("$email","$name");
$mail->isHTML(true);
$mail->Subject = 'TEST1';
$mail->Body = "$msg";
if (!$mail->send()){ // Send the message
echo 'Message Failed';
} else {
header("Location: http://strawberryletting.co.uk/new_form/thank_you.html"); // Take me to Thank you page
}
?>
HTML:
<div class = "container">
<div class = "row">
<div class = "col-lg-12">
<section id = "contact">
<form action = "enquiry_new.php" method = "post">
<div class = "field name-box">
<input type = "text" id = "name" name = "name" placeholder = "Who Are You?" tabindex = "1" required>
<label for = "name">Name</label>
<span>Done</span>
</div>
<div class = "field email-box">
<input type = "text" id = "email" name = "email" placeholder = "[email protected]" tabindex = "2" required>
<label for = "email">Email</label>
<span>Done</span>
</div>
<div class = "field tel-box">
<input type = "text" id = "tel" name = "tel" placeholder = "Telephone Number" tabindex = "3" required>
<label for = "tel">Mobile</label>
<span>Done</span>
</div>
<div class = "field msg-box">
<textarea id = "msg" name = "msg" rows = "4" placeholder = "What's Up?" tabindex = "4" required></textarea>
<label for = "msg">Message</label>
<span>Done</span>
</div>
<input class = "button" type = "submit" value = "Send" />
</form>
</section>
</div>
</div>
</div>
Магнус Эрикссон. Вы обновили библиотеку PHPMailer, не могли бы вы увидеть мой новый PHP и увидеть проблему? Был бы очень признателен.
Вы рассмотрели все пункты повторяющегося вопроса?
Могу сказать только одно: ваш код должен выдавать кучу уведомлений о неопределенном индексе. Вы используете $_POST['$email'], $_POST['$name'] и т. д., Когда должны быть $_POST['email'], $_POST['name'] и т. д. (Без $ перед клавишами). Вы даже использовали правильные имена в начале файла и сохранили данные в переменных, поэтому я не уверен, почему вы вообще используете переменную $_POST позже в сценарии.
Да, я рассмотрел большинство других моментов в другом вопросе. Таким образом, у вас будет $ mail-> addReplyTo ($ _ POST ['$ email'], $ _POST ['$ name']); и $ mail-> Body = $ _POST ['$ msg']; вот так: $ mail-> addReplyTo ($ _ POST ['email'], $ _POST ['name']); и $ mail-> Body = $ _POST ['msg']; ?
Или просто полностью удалить переменную $ _POST?
Просто используйте вместо этого переменные, которые вы определили в начале.
Спасибо, сделаю еще парочку тестов.
Извини, что приставал к тебе, Магнус. Я обновил код до последней версии PHPMailer, и он работает. Но не направляет меня на страницу благодарности.
ИСПРАВЛЕНО НАКОНЕЦ.






Вместо низкоуровневой функции
mail()используйте одну из проверенных почтовых библиотек, например PHPMailer, SwiftMailer или аналогичные. Это не только даст вам более подробный API, но и отправит электронное письмо через SMTP-сервер вашего почтового провайдера. Таким образом, сценарий также будет более портативным (поскольку он не будет зависеть от конфигурации ваших веб-серверов).