自分のサーバーから送信メールを処理しているループするメーラースクリプトがあります。時折、次のエラーでハングアップします。PhpMailerが致命的な例外を投げる
PHP Fatal error: Uncaught exception 'phpmailerException' with message 'SMTP Error: Data not accepted.'
これは、メッセージのリマインダーが完了する前に私のスクリプトが死ぬようになります。
ここでは、電子メールを開始するコードを示します。
$message = new \PHPMailer(true);
$message -> IsSMTP();
try
{
$message -> SMTPAuth = true;
$message -> Host = Config::HOST;
$message -> Port = Config::PORT;
$message -> Username = $account;
$message -> Password = Config::PASS;
$message -> AddReplyTo($account, Config::NAME);
$message -> SetFrom($account, Config::NAME);
$message -> AddAddress($recipient[0], $recipient[1]." ".$recipient[2]);
$message -> Subject = $recipient,$this->subject;
$message -> AltBody = 'Please enable HTML viewing in order to view this message. Thank you.';
$message -> MsgHTML($recipient,$this->body);
if($attachment !== false)
$message->AddAttachment($attachment);
$message -> Send();
}
catch (phpmailerException $e)
{
return $error -> errorMessage();
}
catch (Exception $e)
{
return $error -> getMessage();
}
私は例外をキャッチしていないようです。どのように私はこれを正常に回復することができますか?以下に示すよう
EDITそれは、名前空間の問題でした。
インスタンス化と 'IsSMTP()'コールを 'try'の中に入れてみましたか? – Madbreaks
[PHPの致命的なエラーをキャッチするにはどうすればいいですか?](http://stackoverflow.com/questions/277224/how-do-i-catch-a-php-fatal-error) – Treffynnon
@Madbreaks、私はこれを行ってみてください。それが動作するかどうかを確認するための失敗を再作成するには、いくつかの作業が必要です。 –