Не получать письма от phpmailer и cpanel - PullRequest
0 голосов
/ 25 февраля 2019

Итак, у меня есть контактная форма, которая использует phpmailer.Он отправляет электронное письмо из одной учетной записи Gmail в другую.Но я не могу получить письмо-получатель для получения писем.

Скрипт размещен на cpanel (RivalHost), а домен находится на GoDaddy.Я спросил RivalHost, блокируют ли они SMTP-подключения или порты 587 или 465, и они ответили, что это не так.Поэтому я понятия не имею, что является причиной проблемы.Сценарий прекрасно работает на моем локальном хосте, но не на cpanel

Вот сценарий рассылки:

<?php

$result="";

if(isset($_POST['submit'])){
    require 'phpmailer/PHPMailerAutoload.php';
    $mail = new PHPMailer;

    $mail->Host='smtp.gmail.com';
    $mail->Port=465;
    $mail->SMTPAuth=true;
    $mail->SMPTSecure='ssl';
    $mail->Username='sendingemail@gmail.com';
    $mail->Password='*********';

    $mail->setFrom('sendingemail@gmail.com');
    $mail->addAddress('receivingemail@gmail.com');
    $mail->addReplyTo($_POST['email'],$_POST['name']);

    $mail->isHTML(true);
    $mail->Subject='Contact: '.$_POST['subject'];
    $mail->Body='Message: '.$_POST['msg'].'</h1>';

    if(!$mail->send()){
        $result='something went wrong';
        echo $result;


    } else {
        $result="thank you";
        echo $result;
    }
}

?>

Мне также сказали проверить мои записи MX, но я не был уверен, на что их менять или нужно ли вообще их менять:

MX  0   ********.com    3599    RBL

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Добавьте это к вашим настройкам:

$mail->isSMTP();
$mail->SMTPDebug = 2; 
$mail->SMTPAuth = true;
if (!$mail->send()) {
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message sent!';
}
0 голосов
/ 25 февраля 2019

Решение 1: PHPMailer использует исключения.Вы можете поместить свой код в блок try / catch, чтобы получать исключения, из-за которых электронные письма не отправлялись.

$mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch

try {
  //Email information comes here
  $mail->Send();
  echo "Message Sent OK\n";
} catch (phpmailerException $e) {
  echo $e->errorMessage(); //Pretty error messages from PHPMailer
}

Solotion 2: Вы также используете брандмауэр CSF?Если это так, проверьте, включена ли настройка «SMTP_BLOCK».Если STMP_BLOCK - включить контакт для хостинга, чтобы отключить его.

...