Laravel9 アップデートによるメール送信機能の修正

前提

Laravelのバージョンを6系から9系にアップデートしました。
バージョンアップ前はメール送信の際の失敗の判断を以下のコードで行っていましたが、
9系では使用できなくなったため以下のコードに変更しました。
(https://stackoverflow.com/questions/72430125/catching-failed-email-recipients-in-laravel-9-symfony-mailer)

PHP

if (count(Mail::failures()) > 0) { // 送信失敗}

↓修正

PHP

try { $mailer->send($email);} catch (TransportExceptionInterface $e) { // 送信失敗}

実現したいこと

修正後のソースコードでメール送信失敗時の検証を行いたいのですが、
例外をthrowする際の書き方では以下エラーが発生してしまいます。

PHP

throw new TransportExceptionInterface('~');

エラー内容

PHP

Cannot instantiate interface Symfony\Component\Mailer\Exception\TransportExceptionInterface {"userId":2,"exception":"[object] (Error(code: 0): Cannot instantiate interface Symfony\\Component\\Mailer\\Exception\\TransportExceptionInterface

失敗時の検証をするために意図的にメール送信を失敗させTransportExceptionInterfaceを発生させる方法はありますでしょうか。
また、失敗時の判断で他に良いものがありましたら教えていただけますと幸いです。
よろしくお願いいたします。

コメントを投稿

0 コメント