Пытаюсь написать учебный проект на php. Нужно создать форму для отправки письма на email, обработать адрес получателя в js скрипте и сделать запрос к php скрипту на отправку письма.
Вот моя форма и js скрипт:
function processForm() {
let emailRecipient = document.getElementsByName('EmailRecipient')[0].value;
let emailMessage = document.getElementsByName('Message')[0].value;
if (checkEmail(emailRecipient) && emailMessage) {
let form = document.getElementById('emailForm');
let formData = new FormData(form);
postRequest('emailSender.php', formData);
return false;
}
else {
showMessage('You have entered an invalid email address!');
return false;
}
}
function postRequest(url, data) {
fetch(url, {
method: 'POST',
body: data
})
.then(handleErrors)
.then(response => showMessage(response.text()))
.catch(error => showMessage(error));
}
function handleErrors(response) {
if (!response.ok) {
throw Error(response.statusText);
}
return response;
}
function showMessage(responseText) {
console.log(responseText);
}
function checkEmail(email) {
let regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
return regex.test(email);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<form id="emailForm">
<div>
<p>To:</p>
<input type="text" name="EmailRecipient">
</div>
<div>
<p>Message:</p>
<textarea name="Message"></textarea>
</div>
<div>
<input type="submit" name="SendEmail" onclick="return processForm();">
</div>
</form>
</div>
</body>
<script src="formHandler.js"></script>
</html>
А вот код на php:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$emailRecipient = '';
$message = '';
if (isset($_POST["EmailRecipient"]) && isset($_POST["Message"])) {
$emailRecipient = $_POST["EmailRecipient"];
$message = $_POST["Message"];
}
$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->IsHTML(true);
$mail->Username = "username@gmail.com";
$mail->Password = "password";
$mail->setFrom("username@gmail.com");
$mail->Subject = "Test";
$mail->Body = $message;
$mail->AddAddress($emailRecipient);
if(!$mail->send()) {
echo "Error!";
} else {
echo "Successful!";
}
Проблема заключается в том, что когда выполнение php скрипта доходит до $mail->send(), я получаю ошибку 502 bad gateway. После этого php скрипт вообще перестает реагировать на любые запросы. Даже при измении кода и в том случае, если я оставляю просто echo "hello!" - вообще ничего не происходит, просто висит бесконечный pending как на картинке ниже. И так до тех пор, пока не перезапустится сервер.
В чем может быть проблема такого поведения? Что я делаю не так? Как это исправить?
Не очень разобрался с настройкой сервера и phpstorm. Я думал, что он автоматически подтягивает сервер и его конфигурацию при установке. Всё-таки выполнял же он на localhost простые скрипты без запросов нормально. Но оказалось, что phpstorm нуждается в ручной конфигурации. Для себя пока нашел выход: работать с проектом с корневой папки сервера. В моем случае это XAMPP и путь C:\xampp\htdocs. Если запускать проект оттуда, то запросы идут корректно. Вроде еще можно настроить mapping из произвольной директории.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Нужно получить расширение файла имея сам файл, сразу расскажу суть, я понимаю что можно получить весь текст после последней точки, и в большинстве...
Пытаясь вывести из таблицы базы данных столбец на страницу, не выводится ничего! Как с этим быть?
Суть в том что каждые 10 пунктов создают новую структуру ul куда выводится все пунктыИ все отлично работает , но у меня не ровное количество...