Manually handling feedback
On this page:
After a mail is sent, most email providers send feedback on the result.
You can handle that feedback for a certain provider by installing one of the add-on package we provide:
Manually handling feedback
You can also manually handle feedback.
First you must add a transport id to a Send
model. Here’s an example listener:
class StoreTransportMessageId { public function handle(MessageSent $event) { if (! isset($event->data['send'])) { return; } /** @var \Spatie\Mailcoach\Models\Send $send */ $send = $event->data['send']; $transportMessageId = $event->message->getHeaders()->get('header-name-used-by-your-email-provider')->getFieldBody(); $send->storeTransportMessageId($transportMessageId); } }
You must register that listener. A typical place would be in a service provider.
Event::listen(Illuminate\Mail\Events\MessageSent::class, StoreTransportMessageId::class);
Next, in the code that handles feedback you can get to the MailSend
like this:
$send = Send::findByTransportMessageId($messageId);
You can mark a send as bounced.
$send->markAsBounced(SendBounceSeverity::PERMANENT);
When a Send
is marked as permanently bounced, the subscriber will get unsubscribed from the email list.