не могу отправить почту через SMTP

1

По какой-то причине я не могу отправить электронное письмо через мой бесплатный веб-хостинг. Служба веб-хостинга говорит, что 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;
}
?>
  • 0
    Попробуйте сбросить переменную $ _POST на странице отправки. Это показано?
  • 0
    Когда вы используете минимальное использование PHPMailer, вы должны также включить class.smtp.php , иначе вы не сможете использовать SMTP. Я бы порекомендовал вам просто использовать PHPMailerAutoload.php , поскольку это PHPMailerAutoload.php вас от необходимости включать все необходимые файлы, если вам когда-нибудь понадобятся другие настройки из PHPMailer.
Показать ещё 1 комментарий
Теги:
email
post
smtp
phpmailer

2 ответа

1

Вы также должны потребовать class.smtp.php, теперь вы включаете только минимальное количество phpmailer, но для отправки писем с SMTP вам также необходимо включить SMTP.

Вы можете скачать его из своего github здесь.

Для этого все намного проще, я бы рекомендовал вам использовать их автозагрузчик, так что вам не нужно требовать все классы, в которых вы нуждаетесь, вам, конечно, все равно придется загружать необходимые классы.

0

добавить после

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';
  • 0
    Вероятно, ошибка, если у OP нет этих файлов ;-)
  • 1
    извините, плохой английский, да без class.smtp.php он ничего не может отправить ;-)
Показать ещё 21 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню