php 如何重新发送那些无法从Laravel发送的电子邮件?

mspsb9vt  于 2023-05-05  发布在  PHP
关注(0)|答案(1)|浏览(202)

在我的laravel服务器邮件有时无法交付给收件人,我想重新发送这些电子邮件,直到他们成功发送给他们,我想在不使用数据库帮助的情况下为整个应用程序进行全局管理。
P.S.我在Laravel 6.2中使用了Laravel默认的邮件助手函数
我尝试过在所有使用邮件辅助函数的地方使用try catch,但从代码的Angular 来看,这是一个长而奇怪的东西。

5m1hhzi4

5m1hhzi41#

简单的方法是增加尝试次数,如果作业失败,它将自动再次运行,直到它完成或耗尽它的尝试。
按队列命令。

php artisan queue:work --tries=3

或者由作业上的一个属性,如果需要跨多个作业,一个抽象类将使它在多个作业中使用起来相当容易。

class YourJob
{
    public $tries = 5;
}

既然我假设你已经知道重试,一种更广泛的逻辑。将是在失败后再次分派作业的选项,请小心,因为如果错误持续,这可能无法正确处理并继续生成作业。挂接到作业的failed方法以创建逻辑,如果作业失败,将触发此操作。为了避免重新生成所有作业,需要对要再次运行的异常进行一些Assert。

class YourJob
{
    public function failed(Throwable $exception): void
    {
        if ($exception instanceof EmailSendFailed) {
            dispatch(new YourJob($this->someProperty));
        }
    }
}

失败的方法解决方案不会被认为是最佳方法,而更像是创建一些更高级案例的方法。

相关问题