【问题标题】:Laravel 5 Mail Queue is Not WorkingLaravel 5 邮件队列不工作
【发布时间】:2016-12-08 18:14:09
【问题描述】:

我正在尝试在 Laravel 5.2 中对电子邮件进行排队,但我在数据库中不断收到空有效负载(如下所示)

我的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');
    });
}

我也试过Mail::later(),但没有成功。

【问题讨论】:

    标签: php laravel email laravel-5.2


    【解决方案1】:

    显然,序列化程序不喜欢字节字符串(在本例中为 $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');
    });
    

    【讨论】:

    • 这是一个很好的观点,我没有意识到这一点,因为这是我尝试排队的第一封电子邮件,因为它会产生一批电子邮件。我只是假设我的某些配置不正确。我会尝试你的解决方案并告知我的结果
    【解决方案2】:

    您应该在控制台中运行监听器

    php artisan queue:listen
    

    阅读更多here

    【讨论】:

    • 我已经这样做了,但问题是数据没有被插入到数据库中,即没有有效负载
    • @MichaelSmith 你解决了吗?我也有同样的问题
    • @Jnanaranjan 是的,我已经对批准的答案进行了编辑,但您可以在此处查看工作代码:pastebin.com/UiK7HVfJ
    猜你喜欢
    • 1970-01-01
    • 2019-07-17
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多