2016-08-03 114 views
3

我试图排队的邮件在Laravel 5.2,但我不断收到空负载在数据库中(如下)Laravel 5邮件队列不工作

Empty Payload

config\queue.php

'connections' => [ 

    ... 

    'database' => [ 
     'driver' => 'database', 
     'table' => 'jobs', 
     'queue' => 'default', 
     'expire' => 60, 
    ], 

    ... 
] 

我的排队代码:

if(Input::get('email-admin')) { 
    $admin_pdf = PDF::loadView('emails.reporting.checkin-report', ['content' => $admin_email])->inline(); 
    Mail::queue('emails.reporting.checkin-email', [], function ($m) use ($admin_pdf, $start) { 
     //Admin should have User ID of '1' 
     $admin = User::find(1); 
     $report_name = $start->format('F') . '-report.pdf'; 
     $m->attachData($admin_pdf, $report_name); 
     $m->to($admin->email, $admin->first_name)->subject('flexxifit ' . $start->format('F') . ' Report'); 
    }); 
} 

我也有t因为Mail::later()没有成功。

回答

2

显然,串行不喜欢字节字符串(在这种情况下,$ admin_pdf)。

您可以通过排队,然后在封闭这样再次解码之前字节字符串数据base64_encoding修复:

$adminPdf = base64_encode($pdfData); //Encoded here 
Mail::queue('emails.reporting.admin-report', $emailData, function (Message $m) use ($adminPdf) { 
    $m->attachData(base64_decode($adminPdf), $reportName); //Decoded here 
    $m->to($adminEmail)->subject('Admin Report'); 
}); 
+0

这是一个很好的观点,我没有意识到这一点,因为这是我试图排队的第一封电子邮件,因为它会产生一批电子邮件。我只是假设我有一些配置不正确。我会尝试你的解决方案,并建议如果我的结果 –

1

你应该在控制台中运行监听

php artisan queue:listen 

更多here

+0

我已经这样做了,但问题是,数据是不是被插入数据库即没有有效载荷 –

+0

@MichaelSmith你有没有修复?我也有同样的问题 – Jnanaranjan

+0

@Jnanaranjan是的,我已对已批准的答案进行了编辑,但您可以在此处看到工作代码:https://pastebin.com/UiK7HVfJ –