semihsemih / laravel-mail-manager
一个Laravel邮件管理器,用于记录和重新发送所有发出的邮件。
Requires
- php: >=8.1
- laravel/framework: ~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0|^9.0
Requires (Dev)
- laravel/pint: ^1.6
This package is auto-updated.
Last update: 2024-09-27 09:54:47 UTC
README
一个Laravel包,可以轻松重新发送系统生成的邮件,无需经过整个应用流程。
此包不提供任何用户界面。如果您正在寻找UI包装器,请参阅 laravel nova mail manager
它是如何工作的?
此包将所有发出的邮件存储在数据库中,并跟踪它们的发送状态。
您可以重新发送所有未发送的邮件,或者根据客户要求重新发送特定的邮件。
此包仅标记邮件的发送状态,无法确定发送的邮件是否已到达用户的邮箱。因此,如果邮件标记为未发送,则表示在发送邮件时发生了错误。可能是由于邮件发送者的速率限制、无效的邮箱凭证等。不要假设发送状态即为成功的邮件投递。
安装
此包可以使用composer安装。
composer require semihsemih/laravel-mail-manager
接下来,您必须通过将以下行添加到 config/app.php
文件中的 providers
数组中来注册包的ServiceProvider。
'providers' => [ // \BinaryBuilds\LaravelMailManager\LaravelMailManagerServiceProvider::class ]
与Laravel Telescope冲突
此包目前与laravel telescope冲突。如果您在应用程序中使用laravel telescope,请确保在注册此包的service provider之后注册telescope service provider。
如果您正在使用 config/app.php
文件注册telescope,请在telescope service provider之后添加service provider,如下所示。
'providers' => [ // App\Providers\TelescopeServiceProvider::class, \BinaryBuilds\LaravelMailManager\LaravelMailManagerServiceProvider::class ]
如果您正在使用 AppServiceProvider.php
文件手动注册telescope,请在注册telescope service provider之后注册此包的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 mail manager做出贡献!请创建一个包含您贡献的pull request,并详细说明您提出的更改。
许可证
本软件包是开源软件,遵循MIT许可证。