Laravel:如何排队邮件以便稍后发送

Gab*_*ich 9 php queue sendmail laravel

我试图使用Mail ::队列发送和发送电子邮件,但是当我调用此函数时,它简单地发送邮件,并且响应被延迟...我认为使用Mail :: queue的目的是排队.. ..

我希望即时响应,而不必等待发送电子邮件

例如

Mail::queue('emails.template', $data, function($message) {
    $message->to('somemail@gmail.com');
    $message->subject('Notificacion');
});

return Response::json(array('error' => 0, 'message' => 'Ok'));
Run Code Online (Sandbox Code Playgroud)

我希望在不等待邮件发送的情况下收到回复.我怎样才能做到这一点???

Wog*_*gan 5

app/config/queue.php - 'default' param您使用的是什么队列驱动程序 ( )?如果您正在使用sync,并且尚未设置其他任何一个,那么您正在使用同步驱动程序,它完全符合名称的意思:任务一创建就运行排队的任务。

您需要为 Laravel 配置一个 MQ 服务器以与之通信。您可以为此获得一个免费的 iron.io 帐户,然后您需要对其进行配置,例如:

'iron' => array(
    'driver'  => 'iron',
    'project' => 'iron-io-project-id',
    'token'   => 'iron-io-queue-token',
    'queue'   => 'queue-name',
),
Run Code Online (Sandbox Code Playgroud)

然后当你使用Mail::queue()它时会将指令推送到iron.io。然后,您必须让另一个线程侦听队列 -php artisan queue:listen在消息被推送到队列时运行并保持运行。