xammie / mailbook
Laravel 邮件探索器
Requires
- php: ^8.0
- illuminate/contracts: ^9.0 || ^10.0 || ^11.0
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- infection/infection: ^0.26.13
- larastan/larastan: ^2.8
- laravel/pint: ^v1.4.1
- nunomaduro/collision: ^6.0 || ^7.0 || ^8.0
- nunomaduro/phpinsights: ^2.6
- orchestra/testbench: ^7.0 || ^8.0
- pestphp/pest: ^1.22 || ^2.0
- pestphp/pest-plugin-laravel: ^1.1 || ^2.0 || ^3.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- rector/rector: ^0.15.1
- spatie/invade: ^1.1
- tomasvotruba/bladestan: ^0.1.0
README
Mailbook 是一个 Laravel 扩展包,允许您轻松检查邮件,而无需在应用程序中实际触发它。
安装
您可以通过 composer 安装此包
composer require --dev xammie/mailbook
接下来,将 mailbook 安装到您的应用程序中
php artisan mailbook:install
使用方法
mailbook:install
命令将创建一个名为 routes/mailbook.php
的路由文件。在此文件中,您可以注册您的邮件。
// This will use dependency injection if your mailable has parameters Mailbook::add(VerificationMail::class); // Use a closure to customize the parameters of the mail instance Mailbook::add(function (): VerificationMail { $user = User::factory()->make(); return new VerificationMail($user, '/example/url') });
接下来,转到 /mailbook
预览可邮寄的邮件。
注册邮件
您可以注册位于 App\Mails
的可邮寄邮件和位于 App\Notifications
的电子邮件通知。
// Mailable Mailbook::add(VerificationMail::class); // Notification Mailbook::add(InvoiceCreatedNotification::class);
您还可以在闭包中使用依赖注入。
// With dependency injection Mailbook::add(function (VerificationService $verificationService): VerificationMail { return new VerificationMail($verificationService, '/example/url'); }); // Without dependency injection Mailbook::add(function (): VerificationMail { $verificationService = app(VerificationService::class); return new VerificationMail($verificationService, '/example/url'); });
发送给用户
大多数情况下,通知需要一个用户(在通知类中也称为 notifiable
)。您可以使用 ::to()
方法设置所需用户。
$user = User::factory()->create(); Mailbook::to($user)->add(WelcomeNotification::class);
如果您不需要用户,也可以传递一个电子邮件地址。
Mailbook::to('example@mailbook.dev')->add(WelcomeNotification::class)
分组多个邮件
您可以将多个邮件分组到同一类别下。这可以通过使用 category()
和 group()
方法来完成。
Mailbook::category('Invoices')->group(function () { Mailbook::add(InvoiceCreatedNotification::class); Mailbook::add(InvoicePaidNotification::class); });
为了避免在需要它的每个可邮寄邮件上传递相同的 to()
,您还可以使用 group()
方法。这将使用组内的每个可邮寄邮件的 notifiable。
Mailbook::to('example@mailbook.dev')->group(function () { Mailbook::add(WelcomeNotification::class); Mailbook::add(TrialEndedNotification::class); });
您还可以将 category()
和 to()
串联到同一个组中。
Mailbook::to('example@mailbook.dev') ->category('Invoices') ->group(function () { // ... });
变体
在创建邮件时,您可能需要对同一邮件进行几种不同的场景测试,您可以使用变体来解决此问题。
// Use a closure to customize the parameters of the mail instance Mailbook::add(OrderCreatedMail::class) ->variant('1 item', fn () => new OrderCreatedMail(Order::factory()->withOneProduct()->create())) ->variant('2 items', fn () => new OrderCreatedMail(Order::factory()->withTwoProducts()->create()));
本地化
当您的应用程序支持多种语言时,您需要轻松预览这些语言中的邮件。要启用此功能,您必须将以下代码添加到 mailbook.php
配置文件中。
'locales' => [ 'en' => 'English', 'nl' => 'Dutch', 'de' => 'German', 'es' => 'Spanish' ],
这将在 mailbook 中显示一个下拉菜单,您可以使用它来切换到不同的语言。
使用数据库
大多数情况下,您的可邮寄邮件将需要数据库模型。有时,您甚至会在渲染这些可邮寄邮件时执行查询。Mailbook 可以在渲染后自动回滚数据库更改。您可以在配置中启用它。
'database_rollback' => true,
现在,您可以在注册可邮寄邮件时安全地使用工厂和其他查询。
// All database changes are rolled back after rendering the mail. Mailbook::add(function (): OrderShippedMail { $order = Order::factory()->create(); $tracker = Tracker::factory()->create(); return new OrderShippedMail($order, $tracker); });
默认情况下禁用数据库回滚。
发送邮件
如果您想确保一切显示正确,则在浏览器外测试您的邮件非常重要。您可以使用 Mailbook 通过您的默认邮件驱动程序将邮件发送到您选择的电子邮件地址。这将显示右上角的一个按钮,当按下该按钮时,将当前选定的电子邮件发送到指定的地址。您可以在配置中启用此功能
'send' => true, 'send_to' => 'test@mailbook.dev',
自定义
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="mailbook-config"
可选地,您可以使用以下命令发布视图
php artisan vendor:publish --tag="mailbook-views"
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 变更日志。
贡献
有关详细信息,请参阅 贡献指南。
安全漏洞
有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。