【问题标题】:Laravel email queue works but doesn't sendLaravel 电子邮件队列工作但不发送
【发布时间】:2024-04-22 14:10:02
【问题描述】:

我遇到了一个问题,我正在尝试排队发送消息以发送给注册用户,当我运行一切正常时,但队列无法正常工作,有人可以帮我解决这个问题吗? 这是注册控制器

 protected function create(array $data)
    {
      $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
            'type' => $data['type'],
        ]);
        $email = (string)$data['email'];
        $job = (new SendEmailJob($email))->delay(Carbon::now()->addSeconds(5));
        dispatch($job);

        return $user;
    }

我检查了我是否可以发送电子邮件并且它可以发送电子邮件,但是当我指向特定电子邮件而不是来自注册表单的数据时。 这是 SendEmailJob

 public function handle($user)
    {
        Mail::to($user)->send(new SendEmailMailable());
    }

【问题讨论】:

  • 您有正在运行的队列吗?您可以使用 'php artisan queue:work' 执行此操作,看看是否有帮助。
  • 哦哇我应该跑那个?我以为队列会自己运行
  • @techcyclist 将其作为答案发布,以便我可以选择您的作为正确答案
  • 会的,很高兴它有帮助

标签: php laravel email queue


【解决方案1】:

听起来您没有正在运行的队列。您可以使用

php artisan queue:work

您也可能需要一个失败的作业表,而 artisan 对此有一个命令:

php artisan queue:failed-table

php artisan migrate

如果您想删除所有失败的作业,您可以这样做:

php artisan queue:flush

我建议在 laravel 文档网站上阅读所有这些内容:https://laravel.com/docs/5.7/queues

我也想分享一个good post on * regarding queues

【讨论】:

    最近更新 更多