php - Laravel 邮件 - 没有邮件正文
问题描述
ErrorException htmlspecialchars() 期望参数 1 是字符串,给定对象(查看:F:\OWL\owl-technical\resources\views\emails\contact-mail.blade.php)
我尝试从联系页面上的表单发送消息后出现此错误!
联系表
<!-- ***** Contact Form Start ***** -->
<div class="col-lg-8 col-md-6 col-sm-12">
<form action="{{ route('contacts') }}/send" method="POST">
@csrf
<div class="contact-form">
<div class="row">
<div class="col-lg-6 col-md-12 col-sm-12">
<input type="text" name="name" id="name" placeholder="Name">
</div>
<div class="col-lg-6 col-md-12 col-sm-12">
<input name="email" id="email" type="email" placeholder="E-Mail">
</div>
<div class="col-lg-12">
<textarea name="message" id="message" placeholder="Your message"></textarea>
</div>
<div class="col-lg-12">
<button type="send">Send message</button>
</div>
</div>
</div>
</form>
</div>
<!-- ***** Contact Form End ***** -->
但是如果我在文件联系人邮件中添加 {{json_decode ($ name)}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
</head>
<body>
name: {{ $name}} <br>
email: {{ $email}} <br>
message : {{$message }} <br>
</body>
</html>
名称用 /u042 / u043 之类的东西编码(但这里很清楚,我使用 json 对名称进行编码)等等。但收到信件时,消息字段仍为空。
拉拉维尔 7.0
从本地主机发送电子邮件不起作用。他写道,如果没有电子邮件,他就无法发送消息,但我将所有字段都放在了电子邮件中。使用 docs.laravel 创建所有内容。
应用\Http\Controller\MailSetting
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Mail;
use Illuminate\Http\Request;
use App\Mail\MailClass;
class MailSetting extends Controller
{
public function send_form(Request $request)
{
$name = $request->name;
$email = $request->email;
$message = $request->message;
Mail::to('test@mail.ru')->send(new MailClass($name, $email, $message));
}
}
应用\邮件\邮件类
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class MailClass extends Mailable
{
use Queueable, SerializesModels;
protected $name;
protected $email;
protected $message;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($name, $email, $message)
{
$this->name = $name;
$this->email = $email;
$this->message = $message;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('emails.contact-mail')
->with([
'name' => $this->name,
'email' => $this->email,
'message' => $this->message,
])
->subject('New MESSAGE ');
}
}
我检查了所有可能的内容,但从未发现错误
解决方案
将变量更改$message
为另一个变量。Laravel 自动使该$message
变量可用于您的所有电子邮件模板
推荐阅读
- javascript - 如何在 Chrome 或 Firefox 中监控或分析 DOM 更新?
- c# - 在 SqlBulkCopy.WriteToServer 异常上查找失败的行并通过省略那些失败的行来重试 SqlBulkCopy
- excel - Excel 数据表示,轴标签非数字
- mysql - 如何在 MySQL 中循环遍历 JSON 数据
- python - 如何为 forms.ChoiceField() 设置默认值?
- c# - 可变结构作为成员变量,用于序列化/JSON 生成中的性能
- arrays - 如何使用迭代器创建一个循环,该迭代器将只使用不同的计数器运行相同的命令 - 在 PowerShell 中
- confluent-platform - 将查询推送到 ksqlDB,而不是在第一个结果行中返回最终结果
- javascript - 我在javascript中得到未定义
- azure - 天蓝色服务器上的 SMB 客户端未从天蓝色存储中删除文件