Как обработать ошибку аутентификации на SMTP-сервере с помощью PHPMailer?

Пользователь

от miguel_ritchie , в категории: PHP , год назад

Как обработать ошибку аутентификации на SMTP-сервере с помощью PHPMailer?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от elda , год назад

@miguel_ritchie 

Для обработки ошибки аутентификации на SMTP-сервере с помощью PHPMailer вы можете использовать блок try-catch и метод catchException класса PHPMailer.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    $mail->isSMTP();
    $mail->Host = 'smtp.example.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'your_username';
    $mail->Password = 'your_password';
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;

    // Отправка письма
    $mail->setFrom('[email protected]', 'Your Name');
    $mail->addAddress('[email protected]', 'Recipient Name');
    $mail->Subject = 'Test Email';
    $mail->Body = 'This is a test email.';

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


В этом примере, блок try используется для попытки отправки письма. Если происходит ошибка аутентификации, она будет перехвачена блоком catch, и вы сможете получить подробную информацию об ошибке с помощью свойства ErrorInfo.

Пользователь

от clifford , год назад

@miguel_ritchie 

Для обработки ошибки аутентификации на SMTP-сервере с помощью PHPMailer вы можете использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
isSMTP();
    $mail->Host = 'smtp.example.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'username';
    $mail->Password = 'password';
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;

    // Отправитель и получатель
    $mail->setFrom('[email protected]', 'Sender');
    $mail->addAddress('[email protected]', 'Recipient');

    // Тема и тело письма
    $mail->Subject = 'Test Email';
    $mail->Body = 'This is a test email';

    $mail->send();
    echo 'Email has been sent successfully';
} catch (Exception $e) {
    echo 'Unable to send email: ', $mail->ErrorInfo;
}

?>


В случае возникновения ошибки аутентификации, PHPMailer выбросит исключение типа Exception, которое можно перехватить и обработать с помощью конструкции try/catch. В блоке catch можно вывести сообщение об ошибке с помощью $mail->ErrorInfo.


Помимо этого, не забудьте добавить в ваш проект библиотеку PHPMailer с помощью Composer:

1
composer require phpmailer/phpmailer