Laravel Mail在不停止执行时如何处理SwiftTransport_Exception

问题描述 投票:0回答:1

我正在研究旧版Laravel系统的问题,在该系统中,使用Mail :: send()外观发送的电子邮件偶尔会在日志中记录错误,但实际上并没有抛出错误;也就是说,这些错误并未停止应用程序的执行。

该mailable设置为在呈现视图之前发送。有时会记录一个SwiftTransport_Exception,并且没有收到邮件;但是视图仍然呈现。

我无法重现这些错误,但是处理此处引发的任何错误至关重要。我想捕获这些错误,以便我可以存储电子邮件参数并在以后重新发送它们。

Laravel版本是5.1(我知道...),服务器是Windows Server 12 RT,PHP --v 7.1.0 NTS cgi

代码很简单,没有try / catch或throws:

\Mail::send(
   $templateName,
   $paramsArray,
   function($message){
      $message->subject($subject);
      $message->to($userEmail, $userName);
   }
);

其中一个错误的示例:

[2020-04-07 08:18:59] local.ERROR: Swift_TransportException: Connection to tcp://smtp.office365.com:587 Timed Out in E:\inetpub\wwwroot\REDACTED\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\AbstractSmtpTransport.php:404
Stack trace:
#0 E:\inetpub\wwwroot\REDACTED\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\AbstractSmtpTransport.php(277): Swift_Transport_AbstractSmtpTransport->_getFullResponse(22)
#1 E:\inetpub\wwwroot\REDACTED\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\EsmtpTransport.php(270): Swift_Transport_AbstractSmtpTransport->executeCommand('\r\n.\r\n', Array, Array)
#2 E:\inetpub\wwwroot\REDACTED\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\AbstractSmtpTransport.php(333): Swift_Transport_EsmtpTransport->executeCommand('\r\n.\r\n', Array)
#3 E:\inetpub\wwwroot\REDACTED\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\AbstractSmtpTransport.php(428): Swift_Transport_AbstractSmtpTransport->_streamMessage(Object(Swift_Message))
#4 E:\inetpub\wwwroot\REDACTED\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\AbstractSmtpTransport.php(443): Swift_Transport_AbstractSmtpTransport->_doMailTransaction(Object(Swift_Message), 'REDACTED..', Array, Array)
#5 E:\inetpub\wwwroot\REDACTED\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\AbstractSmtpTransport.php(176): Swift_Transport_AbstractSmtpTransport->_sendTo(Object(Swift_Message), 'REDACTED...', Array, Array)
#6 E:\inetpub\wwwroot\REDACTED\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mailer.php(85): Swift_Transport_AbstractSmtpTransport->send(Object(Swift_Message), Array)
#7 E:\inetpub\wwwroot\REDACTED\vendor\laravel\framework\src\Illuminate\Mail\Mailer.php(394): Swift_Mailer->send(Object(Swift_Message), Array)
#8 E:\inetpub\wwwroot\REDACTED\vendor\laravel\framework\src\Illuminate\Mail\Mailer.php(179): Illuminate\Mail\Mailer->sendSwiftMessage(Object(Swift_Message))
#9 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(6106): Illuminate\Mail\Mailer->send('emails.2fa', Array, Object(Closure))
#10 E:\inetpub\wwwroot\REDACTED\app\Http\Middleware\TwoFactorVerify.php(33): Illuminate\Support\Facades\Facade::__callStatic('send', Array)
#11 [internal function]: App\Http\Middleware\TwoFactorVerify->handle(Object(Illuminate\Http\Request), Object(Closure))
#12 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(9660): call_user_func_array(Array, Array)
#13 E:\inetpub\wwwroot\REDACTED\app\Http\Middleware\Authenticate.php(45): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#14 [internal function]: App\Http\Middleware\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure))
#15 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(9660): call_user_func_array(Array, Array)
#16 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#17 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(9650): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#18 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(7553): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#19 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(7541): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#20 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(7526): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#21 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(2310): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#22 [internal function]: Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#23 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(9668): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#24 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(2925): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#25 [internal function]: Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#26 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(9660): call_user_func_array(Array, Array)
#27 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(13019): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#28 [internal function]: Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#29 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(9660): call_user_func_array(Array, Array)
#30 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(11611): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#31 [internal function]: Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#32 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(9660): call_user_func_array(Array, Array)
#33 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(12756): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#34 [internal function]: Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#35 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(9660): call_user_func_array(Array, Array)
#36 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(12693): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#37 [internal function]: Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#38 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(9660): call_user_func_array(Array, Array)
#39 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(2982): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#40 [internal function]: Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#41 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(9660): call_user_func_array(Array, Array)
#42 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#43 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(9650): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#44 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(2257): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#45 E:\inetpub\wwwroot\REDACTED\bootstrap\cache\compiled.php(2240): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#46 E:\inetpub\wwwroot\REDACTED\public\index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#47 {main}  

是否可以异步返回异常?如果是这样,是否可以在NTS系统上收听?

php laravel swiftmailer
1个回答
0
投票

[@ RobBiermann在评论中回答

© www.soinside.com 2019 - 2024. All rights reserved.