Обработка ошибок с PHPMailer

Я пытаюсь использовать PHPMailer для маленького проекта, но я немного смущен обработкой ошибок с этим программным обеспечением. Надеясь у кого-то есть опыт с ним. Когда я настроил электронное письмо, и я использую:

$result = $mail->Send();

if(!$result) {
    // There was an error
    // Do some error handling things here
} else {
    echo "Email successful";
}

Который хорошо работает, более или менее. Проблема состоит в том, когда существует ошибка, PHPMailer также, кажется, повторяет ошибку, поэтому если существует проблема, это просто отправляет ту информацию непосредственно в браузер, по существу повреждая любую обработку ошибок I "m пытающийся сделать.

Существует ли способ заставить эти сообщения замолчать? Не выдача исключения, его просто распечатывание ошибки, которая в моем тестовом сценарии является:

invalid address: @invalid@email You must provide at least one recipient email address.

Его предназначенный, чтобы быть ошибкой, но это должно находиться в $mail-> ErrorInfo; не будучи echo'd программным обеспечением.

43
задан Stomped 5 March 2010 в 12:29
поделиться

1 ответ

PHPMAiler использует исключения. Попробуйте использовать следующий код :

require_once '../class.phpmailer.php';

$mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch

try {
  $mail->AddReplyTo('name@yourdomain.com', 'First Last');
  $mail->AddAddress('whoto@otherdomain.com', 'John Doe');
  $mail->SetFrom('name@yourdomain.com', 'First Last');
  $mail->AddReplyTo('name@yourdomain.com', 'First Last');
  $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
  $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
  $mail->MsgHTML(file_get_contents('contents.html'));
  $mail->AddAttachment('images/phpmailer.gif');      // attachment
  $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
  $mail->Send();
  echo "Message Sent OK\n";
} catch (phpmailerException $e) {
  echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
  echo $e->getMessage(); //Boring error messages from anything else!
}
98
ответ дан 26 November 2019 в 22:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: