Laravel 5.4 ShouldQueue不发送电子邮件

时间:2019-01-17 11:20:06

标签: laravel laravel-5

我有一个事件侦听器,当事件触发时,它将触发通知。 当我不实现ShoulQueue类时,将发送通知电子邮件。当实施ShouldQueue时,不会发送电子邮件。我在下面添加了我的代码。

监听器:

class CustomRequestListener
{
  public function handle(CustomRequestCreated $event)
  {
     $user->notify(new CustomRequestEmail());
  }
}

通知类别

use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;

class CustomRequestEmail extends Notification implements ShouldQueue
{
    use Queueable;

    public function via($notifiable)
    {
        return ['mail'];
    }

    public function toMail($notifiable)
    {
        return (new MailMessage)
            ->subject('Test Mail')
            ->view('layout.testmail.template');
    }
}

queue.php

'default' => env('QUEUE_DRIVER', 'sync'),

'connections' => [

        'sync' => [
            'driver' => 'sync',
        ],
    ....
   ]

.env

QUEUE_DRIVER=sync

2 个答案:

答案 0 :(得分:1)

您是否在本地环境上对此进行测试?

如果是这种情况,您应该在队列上侦听,否则不会触发任何事情

以下命令将开始您的队列。保持命令运行以继续监听:

  • 如果使用范围:php artisan horizon
  • 不使用水平线:php artisan queue:work

不是本地的吗?

确保您的服务器上正在运行队列工作器,部署新代码时需要将其重置。与主管一起使用Horizo​​n是一种很好的处理方式。

答案 1 :(得分:0)

您可以通过以下方式重试(我假设您在 Laravel 文档中做了说明,但总有一天它不起作用):

第 1 步:删除数据库中的表“jobs”。

第 2 步:在控制台中运行命令 'php artisan migrate' 以再次创建表 'jobs'。

第 3 步:在控制台中运行命令 'php artisan queue:work'

第 4 步:重试您的应用

请注意,在 .env 文件中,您设置了:

QUEUE_CONNECTION=数据库

QUEUE_DRIVER=数据库

P/s:对我有用!

希望它适合你。