Я использую посылку https://github.com/barbushin/php-imap чтобы прочитать электронную почту с почтового сервера, у меня есть следующий код
$folder = Storage::disk('local')->getAdapter()->getPathPrefix();
try {
$mailbox = new \PhpImap\Mailbox('{imap.gmail.com:993/imap/ssl}INBOX', '[email protected]', 'xxxxxxxxxx', $folder);
}
catch(\Exception $e) {
return 'rroor';
}
но не ловит ошибку, я хочу зарегистрировать ошибку, если вход не удался.
Следующий код вызывает исключение
if(!$result) {
$errors = imap_errors();
if($errors) {
if($throwExceptionClass) {
throw new $throwExceptionClass("IMAP method imap_$methodShortName() failed with error: " . implode('. ', $errors));
}
else {
return false;
}
}
}
Как я могу поймать это исключение на моем методе контроллера?
см страницу ошибки
У вас есть только конструктор класса в try … catch. Я посмотрел на репозиторий, и он, кажется, не выбрасывает это исключение из конструктора. https://github.com/barbushin/php-imap/blob/master/src/PhpImap/Mailbox.php#L33
Есть ли еще в вашем коде, который может вызывать эту часть кода https://github.com/barbushin/php-imap/blob/master/src/PhpImap/Mailbox.php#L148?
Я думаю, вам нужно добавить больше кода в попытку … поймать, чего не хватает в вашем примере.
try {
$folder = Storage::disk('local')->getAdapter()->getPathPrefix();
$mailbox = new \PhpImap\Mailbox('{imap.gmail.com:993/imap/ssl}INBOX',
'[email protected]', 'xxxxxxxxxx', $folder);
}
catch(\Throwable $e) {
return 'error';
}
Попробуй это:
use PhpImap\ConnectionException;
//....
$folder = Storage::disk('local')->getAdapter()->getPathPrefix();
try {
$mailbox = new \PhpImap\Mailbox('{imap.gmail.com:993/imap/ssl}INBOX', '[email protected]', 'xxxxxxxxxx', $folder);
}
catch(ConnectionException $e) {
return 'rroor';
}
Или отредактируйте свое приложение \ Исключения \ Обработчик;
public function render($request, Exception $exception)
{
if ($exception instanceof \PhpImap\ConnectionException\ConnectionException) {
//add log
return 'error';
}
return parent::render($request, $exception);
}