distilleries / mailersaver
Override helper Mailer from laravel to hook the sender
Installs: 3 415
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 5
Forks: 2
Open Issues: 0
Language:HTML
Requires
- php: ^7.1.3
- illuminate/database: 5.7.*
- illuminate/filesystem: 5.7.*
- illuminate/mail: 5.7.*
- illuminate/support: 5.7.*
- illuminate/view: 5.7.*
- wpb/string-blade-compiler: dev-laravel-5.7#d9cc177760727fa7ac4df0a322cc3e28c0c074c7
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: 3.7.*
- phpunit/phpunit: ^7.0
README
Laravel 5 MailerSaver
Mailer saver extend the laravel 5 mailer.
- Add the possibility to override the to,cc,bcc of your mail without modify your implementation.
- Add the possibility to get your template mail, subject, cc, bcc and type from a model.
Table of contents
Installation
Add on your composer.json
"require": { "distilleries/mailersaver": "2.*", }
run composer update
.
Add Service provider to config/app.php
:
'providers' => [ // ... Distilleries\MailerSaver\MailerSaverServiceProvider::class, Wpb\String_Blade_Compiler\ViewServiceProvider::class, ],
And Facade (also in config/app.php
) replace the laravel facade Mail
'aliases' => [ // ... 'Mail' => 'Distilleries\MailerSaver\Facades\Mail', ]
You need to provide a model of data, simply add on your register method a new instance of your model in your app/Providers/AppServiceProvider.php
:
public function register() { $this->app->singleton('Distilleries\MailerSaver\Contracts\MailModelContract', function ($app) { return new App\Email; }); }
In this case I return a Email model instance.
This model just implement the contract Distilleries\MailerSaver\Contracts\MailModelContract
.
To Publish the model:
php artisan vendor:publish --provider="Distilleries\MailerSaver\MailerSaverServiceProvider" --tag="models"
To Publish the migration:
php artisan vendor:publish --provider="Distilleries\MailerSaver\MailerSaverServiceProvider" --tag="migrations"
Config file
You can publish the config file with the command line:
php artisan vendor:publish --provider="Distilleries\MailerSaver\MailerSaverServiceProvider"
return [ 'template' => 'mailersaver::default', 'override' => [ 'enabled' => env('MAILERSAVER_ENABLED', false), 'to' => env('MAILERSAVER_TO', 'default1@mailto.com,default2@mailto.com'), 'cc' => env('MAILERSAVER_CC', ''), 'bcc' => env('MAILERSAVER_BCC', ''), ], ];
View
To override the view you can give a new template on the configuration or modify the current one. Before modify it you have to publish it:
php artisan vendor:publish --provider="Distilleries\MailerSaver\MailerSaverServiceProvider" --tag="views"
Send an email
It's exactly the same than the laravel mailer.
Example:
Mail::send('emails.welcome', ['key' => 'value'], function ($message) { $message->to('foo@example.com', 'John Smith')->subject('Welcome!'); });
If the override is set to true email is send to another to
email address.
Troubleshooting
If composer update --require-dev refuse to install, remove illuminate/* from vendor before the install or just remove vendor and start fresh.