首页 > 解决方案 > Laravel - Mail::send() 如何将数据(以数组格式)传递到电子邮件 html 并发送

问题描述

我试图在发送之前将存储为数组的请求中的值传递给 html 格式的电子邮件。

$data = array('email' => $request->get('email'), 'name' => $request->get('name'));
    Mail::send('emails.email', ['data' => $data], function ($message) use ($data) {
        $message->subject('Hello world!');
        $message->to($data['email'], $data['name']);
    });

这是我在email.blade.php中的电子邮件 html 格式文件

<h2>HELLO YOU HAVE A NEW EVENT!</h2>
<h3>TO {{$name}}</h3>
<h4>See more details .... <a href="http://localhost:8000/event" target="_blank">Events</a></h4>

但似乎 html 文件没有收到发送的变量 ($name)

如何将数据(以数组格式)传递给电子邮件 html?

我尝试在没有 $ name 变量的情况下发送。看来没有问题。一切顺利但我真的需要使用变量请帮助我

如果使用此代码,我可以使用 $name

$data['name'] = "Guest";
    Mail::send('emails.email', $data, function ($message) {
        $message->to('email@gmail.com', 'name')
                ->subject('topic');
    });

为什么?

标签: phplaravelhtml-emailsendmail

解决方案


Mail::send('emails.email', ['data' => $data], function ($message) use ($data) {
        $message->subject('Hello world!');
        $message->to($data['email'], $data['name']);
});

您正在传递一个data变量,而不是name( ['data' => $data])。所以从该数组中获取名称:

<h2>HELLO YOU HAVE A NEW EVENT!</h2>
<h3>TO {{ $data['name'] }}</h3>

或者$data直接传递变量,以便您可以将其所有值作为单独的变量访问:

Mail::send('emails.email', $data, function ($message) use ($data) {
        $message->subject('Hello world!');
        $message->to($data['email'], $data['name']);
});

推荐阅读