binarybuilds/laravel-mail-manager

一个用于记录和重新发送所有发送出去的邮件的Laravel邮件管理器。

v1.1.0 2020-10-31 11:29 UTC

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许可证授权。