Почему phpmailer не отправляет почту на почтовый сервер моего домена - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь отправить почту на почтовый сервер своего домена: я использовал try {} catch () {}, чтобы определить, есть ли какая-либо ошибка, но, что удивительно, ошибки нет.

<?php 
function Redirect_to($New_Location){
    header("Location:" . $New_Location);
    exit;
}
if(isset($_POST['Submitenq'])){
    require('phpmailer/PHPMailerAutoload.php');

    define ('GUSER','courses@cadcentreju.org');
    define ('GPWD','mymailpass');

    $recever1 = 'courses@cadcentreju.org';

    $enq_name = $_POST["enq_name"];
    $enq_email = $_POST["enq_email"];
    $enq_phone = $_POST["enq_phone"];
    $enq_message = $_POST["enq_message"];

    date_default_timezone_set("Asia/Kolkata");
    $CurrentTime = time();
    $DateTime = strftime("%B-%d-%Y %H:%M:%S",$CurrentTime);
    
    if(empty($enq_name) || empty($enq_email) || empty($enq_phone) || empty($enq_message)){
        Redirect_to("index.php?error=1");
    }else{
        $mail = new PHPMailer();
        try{
            $mail->IsSMTP();
            $mail->Mailer = "smtp";
                // $mail->SMTPDebug  = 2; 
            $mail->SMTPAuth   = TRUE;
            $mail->SMTPSecure = "ssl";
            $mail->Port       = 465;
            $mail->Host       = "mail.supremecluster.com";
            // $mail->CharSet   = "UTF-8";
            $mail->Username   = GUSER;
            $mail->Password   = GPWD;
            $mail->isHTML(true); 
                $mail->setFrom($enq_email,$enq_name);
                $mail->addAddress($recever1);
        
              $mail->Subject = 'Enquery Mail from - '. $enq_name;
              $mail->Body = '<table class="table" cellspacing="0">
              <thead>
                <tr>
                    <th colspan="2">Enquery Mail from - '. $enq_name .'</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                    <td colspan="2">'. '<p>Dear Sir / Madam, I have some enqueries as follows :</p></br>' .'</td>
                </tr>
                <tr>
                    <td>Email:</td>
                    <td>'. $enq_email .'</td>
                </tr>
                <tr>
                    <td>Phone No:</td>
                    <td>'. $enq_phone .'</td>
                </tr>
                <tr>
                    <td>City:</td>
                    <td>'. $sendercity .'</td>
                </tr>
                <tr>
                    <td>Message:</td>
                    <td>'. $enq_message .'</td>
                </tr>
                <tr>
                    <td>Date of Enquery:</td>
                    <td>'. $DateTime .'</td>
                </tr>
              </tbody>
              </table>';
              
              $mail->send();
              $success_msg =  "Your Message Sent Successfully: ";
        }catch(phpmailerException $e){
            echo $e->errorMessage();
        }catch(Exception $e){
            echo $e->getMessage();
        }

    }

}

?>
<?php include 'header.php'; ?>

<div style="height:50vh;margin-top: 268px; background:#ddd;" class="d-flex justify-content-center align-items-center">
    <?php 
        if(isset($success_msg)){
    ?>
    <div class="alert alert-success" role="alert">

        <?php
            echo $success_msg . $enq_name;
        ?>
    </div>
    <?php
        }else{
    ?>
    <div class="alert alert-danger" role="alert">
<?php
    echo "Something went wrong";

?>
</div>
    <?php
        }
    ?>
</div>

<?php include 'footer.php'; ?>

Это показывает мне, что электронное письмо было отправлено успешно, но я не получаю его.

Я связался со своей горячей линией сервера , они говорят, что определенные IP-адреса были заблокированы. Но теперь я разрешил эти IP-адреса из CPanel. Но все же письма не отправляются

Мне очень нужна помощь в этом :)

Спасибо, что нашли время прочитать.

Ответы [ 2 ]

1 голос
/ 05 августа 2020

PHPMailer не генерирует исключения по умолчанию - вы должны запросить их, передав true конструктору, как в $mail = new PHPMailer(true);. Без этого вам нужно проверять возвращаемые значения из таких методов, как send(), чтобы узнать, работают ли они.

Ошибки сохраняются в свойстве ErrorInfo - см. любой из примеров кода, предоставленных с PHPMailer , чтобы увидеть, как правильно обрабатывать ошибки.

Вы также можете установить $mail->SMTPDebug = 2;, чтобы видеть, что говорит ваш почтовый сервер. Кроме того, прочтите руководство по устранению неполадок PHPMailer .

0 голосов
/ 05 августа 2020

Мой последний рабочий код:

function Redirect_to($New_Location){
    header("Location:" . $New_Location);
    exit;
}
if(isset($_POST['Submitenq'])){
    require('phpmailer/PHPMailerAutoload.php');

    define ('GUSER','courses@cadcentreju.org');
    define ('GPWD','mailpass');

    $recever1 = 'courses@cadcentreju.org';

    $enq_name = $_POST["enq_name"];
    $enq_email = $_POST["enq_email"];
    $enq_phone = $_POST["enq_phone"];
    $enq_message = $_POST["enq_message"];

    date_default_timezone_set("Asia/Kolkata");
    $CurrentTime = time();
    $DateTime = strftime("%B-%d-%Y %H:%M:%S",$CurrentTime);
    
    if(empty($enq_name) || empty($enq_email) || empty($enq_phone) || empty($enq_message)){
        Redirect_to("index.php?error=1");
    }else{
        $mail = new PHPMailer(true);
        try{
            $mail->IsSMTP();
            $mail->Mailer = "smtp";
                // $mail->SMTPDebug  = 2; 
            $mail->SMTPAuth   = TRUE;
            $mail->SMTPSecure = "none";
            $mail->Port       = 25;
            $mail->Host       = "mail.supremecluster.com";
            // $mail->CharSet   = "UTF-8";
            $mail->Username   = GUSER;
            $mail->Password   = GPWD;
            $mail->isHTML(true); 
            $mail->setFrom($enq_email,$enq_name);
            $mail->From = GUSER; 
            $mail->FromName = $enq_name;

            $mail->addAddress($recever1);
        
              $mail->Subject = 'Enquiry Mail from - '. $enq_name;
              $mail->Body = '<table class="table" cellspacing="0">
              <thead>
                <tr>
                    <th colspan="2">Enquiry Mail from - '. $enq_name .'</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                    <td colspan="2">'. '<p>Dear Sir / Madam, I have some enquiries. My Details are as follows :</p></br>' .'</td>
                </tr>
                <tr>
                    <td>Email:</td>
                    <td>'. $enq_email .'</td>
                </tr>
                <tr>
                    <td>Phone No:</td>
                    <td>'. $enq_phone .'</td>
                </tr>
                <tr>
                    <td>Message:</td>
                    <td>'. $enq_message .'</td>
                </tr>
                <tr>
                    <td>Date and TIME of Enquery:</td>
                    <td>'. $DateTime .'</td>
                </tr>
              </tbody>
              </table>';
              
              $mail->send();
              $success_msg =  "Your Message Sent Successfully: ";
        }catch(phpmailerException $e){
            echo $e->errorMessage();
        }catch(Exception $e){
            echo $e->getMessage();
        }

Я решил отправлять почту с моего собственного сервера вместо сервера Gmail:

Итак, я изменил:

$mail->SMTPSecure = "ssl";

на

$mail->SMTPSecure = "none";

Самое важное, помнить, что:

$mail->Username   = GUSER;

И

$mail->From = GUSER;

ДОЛЖЕН БЫТЬ ТО ЖЕ

AND

Кроме того, мы должны передать конструктору значение true:

$mail = new PHPMailer(true)

// Аргумент true в конструкторе включает исключения

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