我正在尝试在Laravel 5.2上发送欢迎电子邮件,但工作失败,我不知道如何找出原因。
这是我到目前为止所做的:
public function test(Request $request) {
$email = $request->get('email');
$subject = $this->word('emails.welcome.subject');
// Mail::send # I use this to Send it synchronously
// $this->mailQueue->queue # I use this to Queue
('emails.welcome', ['domain' => 'blablabla', 'name' => 'Marco Aurélio Deleu', 'date' => Carbon::now(),
'total' => 100, 'pretext' => '', 'score' => '', 'surtext' => '', 'password' => 'blabla', 'shop' => ''],
function ($message) use ($email, $subject) {
$message->to($email);
$message->subject($subject);
}, true);
return 'queued';
}
我注意到,当抛出任何类型的异常时,Jobs很容易失败,所以我想我可以使用Mail::send
找出抛出的异常/问题是什么,然后使用{{1当我把它整理出来的时候。
我设法使用这个策略来找出I can't use function calls inside the closure,但现在我不知道还有什么可以做,以找出问题所在。直接发送电子邮件的同步方法工作正常,电子邮件到达,但作业将在队列中失败。
我的最后一个证据是问题出在$this->mailQueue->queue()
数组中,因为如果我使用它而没有任何$data
,则会处理作业并收到电子邮件。
$data
这是队列侦听器:
...
// If I use it like this, it will work perfectly.
$this->mailQueue->queue
('emails.welcome', [ /* empty array */ ], function ($message) use ($email, $subject) {
$message->to($email);
$message->subject($subject);
}, true);