binarybuilds / laravel-mail-manager
一个用于记录和重新发送所有发送出去的邮件的Laravel邮件管理器。
Requires
- php: >=7.1.3
- laravel/framework: ~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0
This package is auto-updated.
Last update: 2024-08-29 05:18:54 UTC
README
一个Laravel包,可以轻松重新发送系统生成的邮件,无需经过整个应用流程。
此包不提供任何UI。如果您正在寻找UI包装器,请参阅laravel nova mail manager
它是如何工作的?
此包将所有发送的邮件存储在数据库中,并跟踪它们是否成功发送。
您可以重新发送所有未发送的邮件,或者根据客户的要求重新发送特定的邮件。
此包只会标记邮件的发送状态,而不会确定发送的邮件是否到达了用户的邮箱。因此,如果邮件被标记为未发送,则表示在发送邮件时发生了错误。可能是由于邮件发送者的速率限制、无效的电子邮件凭据等。不要假设发送状态即为成功的邮件投递。
安装
您可以使用Composer安装此包。
composer require binarybuilds/laravel-mail-manager
接下来,您必须通过在config/app.php
文件中的providers
数组中添加以下行来注册包的service provider。
'providers' => [ // \BinaryBuilds\LaravelMailManager\LaravelMailManagerServiceProvider::class ]
与Laravel Telescope冲突
此包目前与laravel telescope冲突。如果您在应用程序中使用laravel telescope,请确保在注册此包的service provider之后注册telescope service provider。
如果您正在使用config/app.php
文件注册telescope,则将service provider添加到telescope service provider之后,如下所示。
'providers' => [ // App\Providers\TelescopeServiceProvider::class, \BinaryBuilds\LaravelMailManager\LaravelMailManagerServiceProvider::class ]
如果您正在使用AppServiceProvider.php
文件手动注册telescope,则将此包的service provider添加到注册telescope service provider之后,如下所示。
$this->app->register(TelescopeServiceProvider::class); $this->app->register(LaravelMailManagerServiceProvider::class);
接下来,通过运行以下命令发布包配置文件
php artisan vendor:publish --tag=laravel-mail-manager-config
运行迁移以创建存储邮件所需的表。
php artisan migrate
这将创建一个名为mail_manager_mails
的表。您可以使用位于config/mail_manager.php
的已发布配置文件来配置表名。
使用方法
默认情况下,此包会记录所有发送的mailables和通知。
忽略要记录的mailables和通知
如果您希望忽略某些mailables或通知的记录,可以将它们添加到config/mail_manager.php
文件中的ignore
数组中。
重新发送邮件
您可以使用以下命令重新发送任何邮件
php artisan mail-manager:resend-mail 1
在这里,1代表要重新发送的邮件的ID。
重新发送所有未发送的邮件
如果您希望重新发送所有未发送的邮件,可以使用以下Artisan命令
php artisan mail-manager:resend-unsent-mail
由于此命令只会重新发送未发送的邮件,因此您可以安全地安排此命令以重新发送失败的邮件。
$schedule->command('mail-manager:resend-unsent-mail')->daily();
删除旧条目
由于此包记录了所有发送的电子邮件,因此您的数据库表会迅速增长。为了自动删除旧条目,此包提供了一个Artisan命令以安排删除旧条目。
您可以通过在您的调度器中添加以下行来安排删除旧条目
$schedule->command('mail-manager:prune --hours=72')->daily();
这将删除所有72小时以上的条目。
贡献
感谢您考虑为Laravel邮件管理器做出贡献!请创建一个带有详细更改说明的pull request。
许可证
本软件包是开源软件,采用MIT许可证授权。