🍻

Laravelで送信されるすべてのメールをフックして差し込みをしたい

2024/10/24に公開

要件

  • テスト環境から送信されるすべてのメールのタイトルの最初に [テスト]と書いておきたい

実装

Laravelなら当たり前のようにできるよな。

use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Event;
use Illuminate\Mail\Events\MessageSending;

class AppServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        // テスト環境の場合のみ適用
        if (App::environment('local', 'testing')) {
            Event::listen(MessageSending::class, function (MessageSending $event) {
                $message = $event->message;
                $originalSubject = $message->getSubject();
                $message->subject("[テスト] " . $originalSubject);
            });
        }
    }
}

Discussion