Laravel-5如何从存储在db中的模板发送电子邮件

V4n*_*ll4 4 php email laravel laravel-5

如何使用Laravel-5发送存储在数据库中的电子邮件模板?

我目前使用以下代码:

/* Queue thank you email for sending */

Mail::queue('emails.orderthankyou', $order->get()->first()->toArray(), function ($message) {
    $message->to('me@myemail.com')->subject('Thank you for your order');
});
Run Code Online (Sandbox Code Playgroud)

但是,目前上面的模板是从Resources/views目录中提取的.我需要更改此项,因为我的电子邮件模板现在存储在数据库中,如下所示:

Dear {{ $first_name }},<br><br>

Thank you for your order.
Run Code Online (Sandbox Code Playgroud)

如何从数据库中提取这些模板并使用Mail :: Queue呈现它们?

提前致谢.

roz*_*lad 8

首先,您需要从字符串编译模板,如果您需要在字符串模板上使用刀片语法,请参阅:https://github.com/TerrePorter/StringBladeCompiler

如果您不需要任何困难的操作,只需更换名字等,我会选择:

// This will extract your array to variables like $first_name = 'John'
extract($order->get()->first()->toArray());
$generated = "Dear $first_name,<br><br>
            Thank you for your order.";
Run Code Online (Sandbox Code Playgroud)

现在在消息中

Mail::queue([], [], function ($message) use ($generated)
{
    $message->queue('me@myemail.com')
        ->subject('Thank you for your order')
        ->setBody($generated, 'text/html');
});
Run Code Online (Sandbox Code Playgroud)

注意,Mail :: queue/send第一个参数是空数组,还有setBody()方法,你首先传递生成的html,然后告诉它格式为text/html.