По какой-то причине я не могу отправить электронное письмо через мой бесплатный веб-хостинг. Служба веб-хостинга говорит, что SMTP включен, но когда я нажимаю кнопку отправки, он просто перенаправляет меня на белую пустую страницу. Нет кода ошибки, его просто белая страница. Скажите мне, что не так в коде? Предложения будут оценены.
PS - требуемый ввод также не работает, когда я нажимаю кнопку отправки с каждым полем пустым, он все равно открывает send.php...
Моя форма html:
<form action="send.php" method="POST">
<div class="cdiv">
<input name="name" class="info" type="text" placeholder="Enter Name" required />
</div>
<div class="cdiv">
<input name="email" class="info" type="email" placeholder="Enter Your Email ID" required />
</div>
<div class="cdiv" style="height:75px;">
<textarea name="message" class="info" rows="3" placeholder="Enter Your Message" required></textarea>
</div>
<button type="submit" id="sendbtn">SEND</button>
</form>
мой send.php:
<?php
$body = $_POST['message'];
$subject = 'Automated message';
$from = $_POST['email'];
$from_name = $_POST['name'];
require_once("class.phpmailer.php");
require_once("class.smtp.php");
require_once("class.pop3.php");
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 0; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->Username = "[email protected]";
$mail->Password = "password";
$mail->SetFrom = $from;
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AddAddress = "[email protected]";
if(!$mail->Send()) {
$error = 'Mail error: '.$mail->ErrorInfo;
return false;
} else {
$error = 'Message sent!';
echo "Sent!";
return true;
}
?>
Вы также должны потребовать class.smtp.php
, теперь вы включаете только минимальное количество phpmailer, но для отправки писем с SMTP вам также необходимо включить SMTP.
Вы можете скачать его из своего github здесь.
Для этого все намного проще, я бы рекомендовал вам использовать их автозагрузчик, так что вам не нужно требовать все классы, в которых вы нуждаетесь, вам, конечно, все равно придется загружать необходимые классы.
добавить после
require_once("class.phpmailer.php");
это
require_once 'class.smtp.php';
require_once 'class.pop3.php';
то вы можете заменить эту строку
$mail->SetFrom = $from;
этим
$mail->From = $from;
$mail->FromName = $from_name;
И скажите мне, что вы получите?
Я снова получаю чистую страницу...
Замените send.php на это (не забудьте пароль)
require_once 'class.phpmailer.php';
require_once 'class.smtp.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'Your password';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
//$mail->SMTPDebug = 2;
$mail->From = $_POST['email'];
$mail->FromName = $_POST['name'];
$mail->addAddress('[email protected]');
$mail->WordWrap = 50;
$mail->Priority = 1;
$mail->isHTML(true);
$mail->Subject = 'Automated message';
$mail->Body = $_POST['message'];
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';
$mail->CharSet = 'UTF-8';
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
}
echo 'Message has been sent';
class.smtp.php
, иначе вы не сможете использовать SMTP. Я бы порекомендовал вам просто использоватьPHPMailerAutoload.php
, поскольку этоPHPMailerAutoload.php
вас от необходимости включать все необходимые файлы, если вам когда-нибудь понадобятся другие настройки из PHPMailer.