spatie / laravel-mailable-test
一个用于轻松测试邮件的艺术命令
Requires
- php: ^7.3|^8.0
- fakerphp/faker: ^1.16|^1.9.1
- illuminate/contracts: ^7.0|^8.73|^9.0|^10.0|^11.0
- illuminate/database: ^7.0|^8.73|^9.0|^10.0|^11.0
Requires (Dev)
- mockery/mockery: ^1.0|^1.4
- orchestra/testbench: ^5.0|^6.23|^7.0|^8.0|^9.0
README
您真的需要填写整个表单来测试应用程序发送的邮件吗?或者更糟糕的是,完成整个结账流程来查看和调试订单确认邮件?停止这种疯狂的行为。
此包提供了一个艺术命令,可以将邮件发送到电子邮件地址。它可以这样使用
php artisan mail:send-test "OrderConfirmation" recipient@mail.com
将给定的邮件发送到给定的收件人。任何传递给邮件类__construct
方法的参数都将自动传递。
支持我们
我们投入了大量资源来创建最佳开源包。您可以通过购买我们的付费产品之一来支持我们。
我们非常感激您从家乡给我们寄明信片,并说明您正在使用我们哪个包。您可以在我们的联系页面上找到我们的地址。我们将所有收到的明信片发布在我们的虚拟明信片墙上。
安装
您可以通过composer安装此包
composer require spatie/laravel-mailable-test
该包将自动注册自己。
可选地,您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Spatie\MailableTest\MailableTestServiceProvider" --tag="config"
这是已发布配置文件的内容
return [ /* * This class will be used to generate argument values for the constructor * of a mailable. This can be any class as long as it * extends \Spatie\MailableTest\ArgumentValueProvider::class */ 'argument_value_provider_class' => \Spatie\MailableTest\FakerArgumentValueProvider::class, /* * Base namespace Mailable classes */ 'base_namespace' => 'App\Mail', ];
用法
要发送任何邮件,请执行此艺术命令
php artisan mail:send-test "App\Mail\MyMailable" recipient@mail.com
这将发送给定的邮件到给定的邮件地址。给定的邮件中可能设置的收件人、抄送和密送地址将被清除。邮件将只发送到艺术命令中给出的邮件地址。
该包将为邮件构造函数中的任何类型提示的参数提供一个值。如果参数是int
、string
或bool
,则包将使用Faker生成值。任何类型提示Eloquent模型的参数将收到该模型的第一条记录。对于所有具有类类型提示的参数,将使用容器生成参数。
自定义传递给邮件构造函数的值
通过命令
自定义传递给邮件构造函数的值的最佳方法是使用mail:send-test
命令的values
选项。假设您的邮件构造函数看起来像这样
public function __construct(string $title, Order $order) { ... }
在这个例子中,Order
类是一个Eloquent模型。如果您不希望包生成假值或使用第一个Order
,您可以向命令传递一个values
选项。该选项应获取一个由逗号分隔的字符串。每个对中的第一个值(由冒号分隔)应该是邮件构造函数中参数的名称。第二个值应该是传递给该参数的值。对于涉及Eloquent模型的参数,传递的值将用作id。
因此,在这个例子中,My title
将传递给$title
,id为5的Order
将传递给$order
。
php artisan mail:send-test "App\Mail\OrderConfirmation" recipient@mail.com --values="title:My title,order:5"
通过覆盖ArgumentValueProvider
负责获取应传递给可邮寄构造函数的值的类是 Spatie\MailableTest\FakerArgumentValueProvider
。您可以通过在 laravel-mailable-test
配置文件中的 argument_value_provider_class
中指定自己的类来覆盖此类。
默认情况下,该包会将 Eloquent 模型的第一条记录传递给每个类型提示为模型的参数。如果您想使用自己的工厂,可以这样做。
namespace App; use Spatie\MailableTest\FakerArgumentValueProvider; class MyCustomArgumentValueProvider extends FakerArgumentValueProvider { protected function getModelInstance(string $mailableClass, string $argumentName, Model $model, $id): Model { return factory(get_class($model)); } }
更新日志
有关最近更改的更多信息,请参阅 更新日志。
测试
$ composer test
贡献
有关详细信息,请参阅 贡献指南。
安全
如果您发现与安全相关的错误,请通过发送电子邮件到 security@spatie.be 而不是使用问题跟踪器。
明信片软件
您可以使用此软件包,但如果它进入您的生产环境,我们非常感谢您从您的家乡给我们寄一张明信片,说明您正在使用我们的哪个软件包。
我们的地址是:Spatie,Kruikstraat 22,2018 安特卫普,比利时。
我们将所有收到的明信片 发布在我们的公司网站上。
鸣谢
许可协议
MIT 许可协议(MIT)。有关更多信息,请参阅 许可文件。