Closure listeners are defined with a closure alone, no need to have MessageSending::class as first parameter:
Event::listen(function (MessageSending $event) {
$tracker = new MailTracker;
$tracker->messageSending($event);
});
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
In one of package's service provider, I have
Event::listen(MessageSending::class, MyHandler::class);
Then I added https://github.com/jdavidbakr/mail-tracker which also tries to listen to MessageSending (https://github.com/jdavidbakr/mail-tracker/blob/96244f621f1201385a2645152cabb414b2a7fde3/src/MailTrackerServiceProvider.php#L36), however, only MyHandler is called.
How do I make both handlers run on the event?
After more debugging, I found the issue: for a handler's handle(), it must return null. Anything else will cause the next handler not to run.
Please or to participate in this conversation.