从排队的事件处理程序

时间:2015-12-31 01:18:27

标签: laravel event-handling queue laravel-5.1 lumen

我使用Lumen 5.1和Redis作为队列。我有一个非常标准的事件处理程序,应该发送一封电子邮件:

<?php

namespace App\Handlers\Events;

use Illuminate\Contracts\Queue\ShouldQueue;
use App\Events\UserHasRegistered;
use Illuminate\Contracts\Mail\Mailer;

class SendWelcomeEmail implements ShouldQueue
{
    protected $mailer;

    public function __construct(Mailer $mailer)
    {
        $this->mailer = $mailer;
    }

    public function handle(UserHasRegistered $event)
    {
        $user = $event->user;

        $this->mailer->raw('Test Mail', function ($m) use ($user) {
            $name = $user->getFirstName().''.$user->getLastName();

            $m->to($user->auth()->getEmail(), $name)->subject('This is a test.');
        });
    }
}

当我不使用ShouldQueue界面时,会发送电子邮件。但是,当我将事件处理程序推送到队列(即使用ShouldQueue接口)时,不会发送电子邮件,也不会收到任何错误消息。

您对如何解决或调试这个有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这不是一个错误,只是一个意想不到的行为。

我正在使用Windows上的Xampp和用于开发的php mail驱动程序。由于某种原因,排队的邮件未保存在Xampp目录中的默认mailoutput文件夹中。而是在Lumen目录中自动创建了一个新的mailoutput文件夹。

我找到了所有遗失的邮件。 :)