2012-04-13 13 views
0

自分のサーバーから送信メールを処理しているループするメーラースクリプトがあります。時折、次のエラーでハングアップします。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それは、名前空間の問題でした。

+2

インスタンス化と 'IsSMTP()'コールを 'try'の中に入れてみましたか? – Madbreaks

+1

[PHPの致命的なエラーをキャッチするにはどうすればいいですか?](http://stackoverflow.com/questions/277224/how-do-i-catch-a-php-fatal-error) – Treffynnon

+0

@Madbreaks、私はこれを行ってみてください。それが動作するかどうかを確認するための失敗を再作成するには、いくつかの作業が必要です。 –

答えて

1

ほとんどの場合、名前空間エラーです。エラーの最もシンプルなものです。

catch (\phpmailerException $e) 
+0

+1それでした!ありがとう! –

関連する問題