distilleries / mailersaver
覆盖laravel的Mailer助手以挂钩发送者
2.6.0
2018-11-27 09:41 UTC
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
扩展laravel 5的Mailer。
- 添加覆盖您邮件的to、cc、bcc的功能,而无需修改您的实现。
- 添加从模型获取模板邮件、主题、cc、bcc和类型的功能。
目录
安装
在composer.json中添加
"require": { "distilleries/mailersaver": "2.*", }
运行composer update
。
将服务提供者添加到config/app.php
'providers' => [ // ... Distilleries\MailerSaver\MailerSaverServiceProvider::class, Wpb\String_Blade_Compiler\ViewServiceProvider::class, ],
并且 Facade(也在config/app.php
中)替换laravel facade Mail
'aliases' => [ // ... 'Mail' => 'Distilleries\MailerSaver\Facades\Mail', ]
您需要提供一个数据模型,只需在app/Providers/AppServiceProvider.php
中的register方法中添加您模型的一个新实例即可
public function register() { $this->app->singleton('Distilleries\MailerSaver\Contracts\MailModelContract', function ($app) { return new App\Email; }); }
在这种情况下,我返回一个Email模型实例。这个模型只实现了Distilleries\MailerSaver\Contracts\MailModelContract
合约。
发布模型
php artisan vendor:publish --provider="Distilleries\MailerSaver\MailerSaverServiceProvider" --tag="models"
发布迁移
php artisan vendor:publish --provider="Distilleries\MailerSaver\MailerSaverServiceProvider" --tag="migrations"
配置文件
您可以使用命令行命令发布配置文件
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', ''), ], ];
视图
要覆盖视图,您可以在配置中提供一个新的模板或修改当前的模板。在修改之前,您必须先发布它
php artisan vendor:publish --provider="Distilleries\MailerSaver\MailerSaverServiceProvider" --tag="views"
发送电子邮件
它与laravel mailer完全相同。
示例
Mail::send('emails.welcome', ['key' => 'value'], function ($message) { $message->to('foo@example.com', 'John Smith')->subject('Welcome!'); });
如果覆盖设置为true,则电子邮件将发送到另一个to
电子邮件地址。
故障排除
如果composer update --require-dev拒绝安装,在安装之前从vendor中删除illuminate/*,或者直接删除vendor并重新开始。