PHPMailer不发送电子邮件,也不返回错误

时间:2018-10-28 02:58:39

标签: php phpmailer

这些配置文件有什么问题吗?

Email.class.php

<?php

    class Email{

        public static function Send($to, $subject, $body){

            if(Config::Email()->Enable != true) return true;

            try{

                $mail = new \PHPMailer\PHPMailer\PHPMailer;
                $mail->Debug = 
                $mail->SMTPOptions = array(
                    "ssl" => array(
                        "verify_peer" => false,
                        "verify_peer_name" => false,
                        "allow_self_signed" => true
                    )
                );
                $mail->isSMTP();
                $mail->SMTPAuth = true;     
                $mail->Host = Config::Email()->Hostname;
                $mail->SMTPSecure = Config::Email()->Encryption;
                $mail->Port = Config::Email()->Port;
                $mail->Username = Config::Email()->Username;
                $mail->Password = Config::Email()->Password;

                $mail->setFrom(Config::Email()->Username, Config::Email()->Name);
                $mail->addReplyTo(Config::Email()->Username, Config::Email()->Name);
                $mail->addAddress($to);

                $mail->isHTML(true);
                $mail->Subject = $subject;
                $mail->Body = $body;
                //$mail->AltBody = $alt;

                $result = $mail->send();

                if(!$result && Config::Debug()->Email) IO::Dump($mail->ErrorInfo);

                return $result;

            }catch(Exception $e){

                if(Config::Debug()->Email) IO::Dump($e);

                return false;

            }

        }

    }

?>

配置文件

;Config

[Email]
    Enabled         =   true
    Hostname        =   "domain.tld"
    Encryption      =   "STARTTLS"
    Port            =   "587"
    Username        =   "admin@domain.tld"
    Password        =   "admin$#@!1"
    Name            =   "Admin"

[Cache]
    Enabled         =   true
    Lifespan        =   3600

[Debug]
    Errors          =   true
    Parser          =   false
    Database        =   false
    Email           =   true

我的应用程序没有发送电子邮件-但是,它也没有返回错误。我只是确保配置选项定义正确。

1 个答案:

答案 0 :(得分:0)

您的代码具有基本的语法错误,将无法运行。

您不仅可以组成属性并期望它们做一些神奇的事情,也不能为未定义的实际属性值并希望它们起作用。

Debug属性不存在。对于调试输出,所需的属性是SMTPDebug,并且您可能希望将其设置为2

SMTPSecure属性接受tlssslfalse的值。没有其他人。

Port是整数,而不是字符串。

除非您确切地知道为什么,否则请不要禁用证书验证。 “因为它使它起作用”不是适当的理由。

如果发件人地址与发件人地址相同,则无需设置答复地址。

其中一个或多个可以解决您的问题,但是如果没有更多有关该问题的信息,我们将无法猜测更多信息,您可以使用《 PHPMailer故障排除指南》中的建议进行诊断。