semihsemih/laravel-mail-manager

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

v1.0.0 2023-02-25 12:21 UTC

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许可证