为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 phpmailer 不向我的域邮件服务器发送邮件

为什么 phpmailer 不向我的域邮件服务器发送邮件

PHP
撒科打诨 2023-09-15 17:09:11
我正在尝试将邮件发送到我的域邮件服务器:我使用了 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>它显示电子邮件已成功发送,但我没有收到任何邮件。我联系了我的服务器帮助热线,他们说某些 IP 被阻止了。但现在我已经从 CPanel 允许了这些 IP。但邮件仍然没有发送我真的需要这方面的帮助:)感谢您抽出时间阅读。
查看完整描述

3 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

PHPMailer 默认情况下不会抛出异常 - 您必须通过传递给构造函数来请求异常true,如$mail = new PHPMailer(true);. 如果没有它,您必须检查方法的返回值,例如send()确定它们是否有效。

错误存储在ErrorInfo属性中。

您还可以设置$mail->SMTPDebug = 2;查看邮件服务器的内容。


查看完整回答
反对 回复 2023-09-15
?
侃侃无极

TA贡献2051条经验 获得超10个赞

转到您的 Gmail 帐户 -> 安全

找到“访问不太安全的应用程序”。打开它并再次运行您的 PHP 文件。

邮件应该已发送。


查看完整回答
反对 回复 2023-09-15
?
POPMUISE

TA贡献1765条经验 获得超5个赞

我的最终工作代码是:


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;

必须相同



另外,我们必须将 true 传递给构造函数:


$mail = new PHPMailer(true)

// 构造函数中的参数 true 启用异常


查看完整回答
反对 回复 2023-09-15
  • 3 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信