Как обработать ошибку отправки письма с помощью PHPMailer?

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

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

Как обработать ошибку отправки письма с помощью PHPMailer?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от hobart.rath , год назад

@dorothea_stoltenberg 

В случае ошибки отправки письма с помощью PHPMailer, можно воспользоваться методом catchException() для обработки и вывода ошибок. Ниже приведен пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;

$mail = new PHPMailer(true);

try {
    //... настройка параметров отправки письма ...

    $mail->send();
    echo 'Письмо успешно отправлено';
} catch (Exception $e) {
    echo 'Произошла ошибка при отправке письма: ' . $mail->ErrorInfo;
}


catchException() перехватывает исключение Exception, которое генерируется в случае возникновения ошибки при отправке письма. Метод ErrorInfo возвращает текстовую информацию об ошибке, которую можно вывести для отладки или уведомления пользователя.


Помимо этого, также возможно использовать метод SMTPDebug для вывода отладочной информации при отправке письма. Например:

1
$mail->SMTPDebug = 2;


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

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

от marshall.cummings , год назад

@dorothea_stoltenberg 

При использовании 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
require 'PHPMailer.php';
require 'SMTP.php';

use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerSMTP;

$mail = new PHPMailer();

// Настройка параметров для отправки писем
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'password';
$mail->Port = 587;

// Здесь настройки письма: адрес отправителя, адрес получателя, тема, текст и т.д.

// Попытка отправить письмо
if(!$mail->send()){
    echo 'Ошибка отправки письма: ' . $mail->ErrorInfo;
} else {
    echo 'Письмо успешно отправлено';
}


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


Код ошибки можно использовать для более детальной обработки: