ОШИБКА SMTP: Не удалось подключиться к серверу: php_network_getaddresses: ошибка getaddrinfo: Такой хост неизвестен | PHP Mailer 6.5

#php #email #smtp #phpmailer

Вопрос:

Попытка отправить почту с помощью PHPMailer 6.5 (Текущая последняя версия). Большая часть кода скопирована из программы PHPMailer. Поэтому я надеюсь, что в объяснениях нет необходимости.

Ошибка:

 2021-07-05 13:21:33 SMTP ERROR: Failed to connect to server: 

php_network_getaddresses: getaddrinfo failed: No such host is known. (0)
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Message has been sent
 

Код

 <?php

use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
use PHPMailerPHPMailerSMTP;

require 'vendor/autoload.php';

$mail = new PHPMailer();

try {
    //Server settings
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                      //Enable verbose debug output
    $mail->isSMTP();                                            //Send using SMTP
    $mail->Host       = 'smtp.example.com';                     //Set the SMTP server to send through
    $mail->SMTPAuth   = true;
    $mail->Username   = 'foo@gmail.com';                     //SMTP username
    $mail->Password   = '*******';                               //SMTP password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;            //Enable implicit TLS encryption
    $mail->Port       = 465;

    $mail->setFrom('foo@gmail.com', 'Megasoft Money');
    $mail->addAddress('foo2@gmail.com');
    $mail->addReplyTo('foo@gmail.com', 'Megasoft Money');

   
    //Content
    $mail->isHTML(true);                                  //Set email format to HTML
    $mail->Subject = 'PHP Mailer Subject';
    $mail->Body    = 'Hi, this is a test body.';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
 

Комментарии:

1. Он точно скопирован/вставлен из примера PHPMailer, за исключением той части, которую вы пропустили, поэтому он ломается. Добавьте use выписки обратно. Вам не нужны эти require инструкции для отдельных классов, если вы используете composer. В файле readme описано, как загрузить PHPMailer как с композитором, так и без него.

Ответ №1:

Вам нужно указать название класса. Используйте либо use утверждение:

use PHPMailerPHPMailerPHPMailer;

Или просто полностью квалифицируйте его:

$a = new PHPMailerPHPMailerPHPMailer();

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

Вам также придется повторить это с SMTP