使用Mail::failures()判断邮件推送是否成功,提示为错误的方法调用

laravel10(全新复制,无污染)
PHP8.2(xampp集成)
win10系统

描述:
控制器中直接引用(未执行其他操作) use Illuminate\Support\Facades\Mail;
使用Mail::send()方法给用户推送邮件,
使用Mail::failures()判断邮件推送是否成功,

错误信息:提示Mail::failures()为错误的方法调用

请问:如何判断邮件推送是否成功?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

按照 Laravel 官方的观念,没有异常就是成功,需要处理就用统一的异常处理器,或者直接 try catch

1年前 评论
讨论数量: 4

方法被移除了吧 可以通过send的返回值来判断

1年前 评论
Artisangg (楼主) 1年前

按照 Laravel 官方的观念,没有异常就是成功,需要处理就用统一的异常处理器,或者直接 try catch

1年前 评论

这个需要看你的邮件推送(可以理解为job队列)是同步的还是异步执行的,如果是同步执行的,确实如楼上所说,根据laravel官方的观念,没有异常就是成功。

如果是异步执行,可以在laravel的应用服务提供者类中进行监听: App\Providers\AppServiceProvider

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     * @return void
     */
     public function register()
     {
        //
     }

    /**
     * Bootstrap any application services.
     * @return void
     */
     public function boot()
     {
        // 监听执行失败的队列
         Queue::failing(function (JobFailed $event) {
            $payload = $event->job->payload();
            if (isset($payload['data']['commandName']) && trim($payload['data']['commandName']) === \Illuminate\Mail\SendQueuedMailable::class) {
               // 业务逻辑
            }
         });
     }
}
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!