Php 从DB发送带有模板的邮件

Php 从DB发送带有模板的邮件,php,laravel,laravel-4,Php,Laravel,Laravel 4,默认情况下,Laravel邮件方法是在视图/电子邮件文件夹中搜索模板。我希望使用mail方法,将模板存储在DB中。我应该如何修改邮件,使其能够从任何来源获取模板?Laravel mail方法不会在“视图/电子邮件”文件夹中搜索模板,您必须提及要用于邮件的刀片模板名称 假设您有一个名为mymailtemplates的文件夹和一个名为welcome.blade.php的模板,然后您可以使用此模板发送邮件,如下所示 Mail::send('mymailtemplates.welcome', $data

默认情况下,Laravel邮件方法是在视图/电子邮件文件夹中搜索模板。我希望使用mail方法,将模板存储在DB中。我应该如何修改邮件,使其能够从任何来源获取模板?

Laravel mail方法不会在“视图/电子邮件”文件夹中搜索模板,您必须提及要用于邮件的刀片模板名称

假设您有一个名为mymailtemplates的文件夹和一个名为welcome.blade.php的模板,然后您可以使用此模板发送邮件,如下所示

Mail::send('mymailtemplates.welcome', $data, function($message)
{
    $message->from('us@example.com', 'Laravel');

    $message->to('foo@example.com')->cc('bar@example.com');

    $message->attach($pathToFile);
});
现在,如果您想使用存储在DB中的模板,将这些模板存储在变量中,并创建一个虚拟刀片文件(dummy.blade.php),该文件只会回显给定的内容(在本例中是来自DB的模板),您现在可以使用存储在DB中的模板发送邮件,如下所示:

Mail::send('mymailtemplates.welcome', $templatedata, function($message)
{
    $message->from('us@example.com', 'Laravel');

    $message->to('foo@example.com')->cc('bar@example.com');

    $message->attach($pathToFile);
});

其中$templatedata将包含从DB分阶段生成的模板代码。

为完整起见,请确认:

首先,您需要创建一个名为example.blade.php的模板,该模板是在resources/views/email中创建的:“email.example”

<!DOCTYPE html>
<html lang="en-EN">
    <head>
        <meta charset="utf-8">
    </head>
    <body bgcolor="#11C9FF">
        {!! $body !!}
    </body>
</html>
现在变量$mailtemplate包含:

[
    'id'    => '1'
    'title' => 'The subject of the email',
    'body'  => '<p>The content of the email</p> '
]

在您的模板中,您可以通过元素名称(id、subject、body)使用变量。

您可以分享如何执行此操作的代码:“在变量中获取这些变量并创建一个虚拟刀片文件(dummy.blade.php),该文件只会回显给定的内容”
[
    'id'    => '1'
    'title' => 'The subject of the email',
    'body'  => '<p>The content of the email</p> '
]
Mail::send('email.example', $mailtemplate, function($message) use $mailtemplate
{
    $message->subject($mailtemplate['title']);        
    $message->from('us@example.com', 'Laravel');
    $message->to('foo@example.com');
});