PHPMailer не отправляет электронные письма и не возвращает ошибку - PullRequest
0 голосов
/ 28 октября 2018

Что-то не так с этими файлами конфигурации?

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 голосов
/ 28 октября 2018

В вашем коде есть основные синтаксические ошибки, и он не будет работать.

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

Свойство Debug не существует.Для вывода отладочной информации требуемое свойство - SMTPDebug, и вы, вероятно, хотите установить его на 2.

. Свойство SMTPSecure принимает значения tls, ssl и false,Никаких других.

Port - это целое число, а не строка.

Не отключайте проверку сертификата, если вы не знаете точно , зачем вам это нужно.«Потому что это заставляет работать» - неуместная причина.

Вам не нужно устанавливать адрес для ответа, если он совпадает с вашим адресом отправителя.

Один или несколько изэто может решить вашу проблему, но мы не можем угадать дальше без дополнительной информации о проблеме, которую вы можете диагностировать, используя рекомендации в руководстве по устранению неполадок PHPMailer.

...