需要建议laravel 5.3中的电子邮件模块,将html邮件正文保存为视图或存储到数据库

时间:2016-12-13 12:56:13

标签: laravel laravel-5.3

我是laravel的新手,我想在laravel中开发电子邮件模块,它可以在整个应用程序中使用。

说,电子商务网站会在注册时发送邮件。订货时等,

我需要一个关于

的建议

1.在DB中保存html邮件正文是否优于创建邮件正文作为视图? 2.哪种laravel功能可以在应用程序中实现发送邮件模块?

1 个答案:

答案 0 :(得分:2)

您应该将邮件正文创建为视图。将其保存在数据库中并在每次需要发送电子邮件时调用它都没有意义。邮件正文是一个静态元素,它不会经常更改。每次发送电子邮件时,唯一需要更新的内容是您随电子邮件附加的变量。 Laravel提供了Laravel Mail开箱即用的功能。因此,例如,在订购商品时发送电子邮件,您需要先收集该特定订单的数据。让我们说:

$data = [
        'name'          => $request->name,
        'email'         => $request->email,
        'phone'         => $request->phone,
        'body_message'  => $request->message,
        'item'          => $item
    ];
  • 在这个例子中,我从表单中收集日期。 item元素可以在购物时使用或使用任何其他方法存储在会话中。

  • 重要提示:我使用了索引' body_message'在那个数组中。您无法使用'消息'。之前我遇到过这个问题,它是受保护的名称。

然后发送消息只需调用Mail :: send()方法,如下所示:

Mail::send(['html' => 'emails.your_view'],
        $data
        , function($message) use ($data)
        {
            $message->from('YourEmailAddress', 'YourCompanyName');
            $message->to($data['email'], $data['name'])->subject('Your Order in YourCompanyName');
        });

然后在视图中,您可以使用以下语法包含存储在该数组中的数据:

{!! $body_message !!}

您还需要查看我提供的有关Laravel Mail的链接。您需要安装额外的软件包,使用邮件驱动程序,配置config / mail.php文件,并可能在.env文件中存储一些信息。

我希望这至少可以作为一个起点。