2012-04-13 182 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(); 
}

我似乎并没有被捕获异常。我该如何从这优雅地恢复过来?

编辑

这是一个命名空间的问题,如下图所示。

+2

您是否尝试过在'try'中放置实例和'IsSMTP()'调用? – Madbreaks 2012-04-13 20:15:42

+1

可能的重复[如何发现PHP致命错误](http://stackoverflow.com/questions/277224/how-do-i-catch-a-php-fatal-error) – Treffynnon 2012-04-13 20:16:56

+0

@Madbreaks,我会尝试给这个去。这将需要一些工作来重新创建失败,看看它是否有效。 – 2012-04-13 21:46:12

回答

1

最有可能的命名空间错误 - 最奇怪的错误。

catch (\phpmailerException $e) 
+0

+1就是这样!谢谢! – 2012-05-07 21:15:10