This package introduces a new preview
mail driver for laravel, when selected it will produce the content of the
sent mail and save it as .html & .eml documents.
Begin by installing the package through Composer. Run the following command in your terminal:
composer require themsaid/laravel-mail-preview
Once composer is done, add the package service provider in the providers array in config/app.php
:
Themsaid\MailPreview\MailPreviewServiceProvider::class
Then publish the config file:
php artisan vendor:publish --provider="Themsaid\MailPreview\MailPreviewServiceProvider"
Finally, change MAIL_DRIVER
to preview
in your .env
file:
MAIL_DRIVER=preview
On every email sent a .html
& a .eml
documents will be generated in storage/email-previews
with a name that includes the first receiver and the subject:
1457904864_jack_at_gmail_com_invoice_000234.html
1457904864_jack_at_gmail_com_invoice_000234.eml
You can open the .html
file in a web browser, or open the .eml
file in your default email client to have a realistic look
at the final output.
When you open the .html
file in a web browser you'll be able to see how your email will look like, however there might be
some differences that varies from an email client to another.
At the beginning of the generated file you'll find a HTML comment with all the message info:
<!--
From:{"[email protected]":"Acme HQ"},
to:{"[email protected]":"Jack Black"},
reply-to:{"[email protected]"},
cc:[{"[email protected]":"Acme Finance"}, {"[email protected]":"Acme Management"}],
bcc:null,
subject:Invoice #000234
-->
From the configuration file you'll be able to change the previews output location as well as the maximum life time for keeping previews, after this time old previews will get removed.
You always will lose your current session, if you click on the generated notification link. This is because Laravel stores the session in an encrypted cookie. To change this behavior, you have to adjust the middleware
property in the config/mailpreview.php
file to match the following snippet:
'middleware' => [
\App\Http\Middleware\EncryptCookies::class,
],