Logging transactional mails
On this page:
Mailcoach can store transactional mails, record any opens and clicks, and even resend them.
Getting started
To work with transactional mails in Mailcoach, you should use
Spatie\Mailcoach\Domain\TransactionalMail\Mails\Concerns\StoresMail
trait on your Mailable class.
Storing mails
In the
content
function of your mailable, you should call the store
method provided by the trait.
use Illuminate\Mail\Mailables\Content; use Illuminate\Mail\Mailables\Envelope; use Spatie\Mailcoach\Domain\TransactionalMail\Mails\Concerns\StoresMail; class YourMailable extends Mailable { use StoresMail; public function envelope(): Envelope { return new Envelope( subject: 'Your order has been shipped!' ); } public function content(): Content { $this->store(); return new Content( markdown: 'mails.orderShipped' ); } }
If you’re using build
in your mailable, you can also the store
method provided by the trait like this.
class YourMailable extends Mailable { use StoresMail; public function build() { $this ->store() ->view('mails.your-mailable') } }
Whenever this mailable is sent, Mailcoach will store and display it in the UI.
Tracking opens and clicks
When enabled with your email provider, transactional mails will track opens & clicks as well.
Tracking opens and/or clicks requires Mailcoach to store the mail, so you have to call store
separately.
class YourMailable extends Mailable { public function content(): Content { $this->store(); return new Content( markdown: 'mails.orderShipped' ); } }
Resending stored mails
You can resend stored transactional mails via the UI or by calling resend
on the Spatie\Mailcoach\Domain\TransactionalMail\Models\TransactionalMail
model
TransactionalMail::find($id)->resend();