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

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

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

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

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

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

2年前 评论
讨论数量: 4

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

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

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

2年前 评论

这个需要看你的邮件推送(可以理解为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) {
               // 业务逻辑
            }
         });
     }
}
2年前 评论

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