Как мне обработать исключение SwiftTransport_Exception, выданное Laravel Mail, когда оно не останавливает выполнение - PullRequest
0 голосов
/ 08 апреля 2020

Я исследую проблему с устаревшей системой Laravel, в которой электронные письма, отправляемые с использованием фасада Mail :: send (), очень редко регистрируют ошибки в журналах, но на самом деле не выдают; то есть ошибки не останавливают выполнение приложения.

Почтовый ящик настроен на отправку до отображения представления. Иногда регистрируется исключение SwiftTransport_Exception, а почта не принимается; но представление по-прежнему отображается.

Я не могу воспроизвести эти ошибки, но очень важно, чтобы любая ошибка, возникшая здесь, была обработана. Я хочу перехватить эти ошибки, чтобы я мог сохранить параметры электронной почты и отправить их позже.

Laravel версия 5.1 (я знаю ...), сервер Windows Сервер 12 RT, PHP --v 7.1.0 NTS cgi

Код прост, без попыток / ловли или бросков:

\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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...