You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel联系表单发邮件报htmlspecialchars()期望字符串却传入对象错误

报错原因

你遇到的这个报错是Laravel邮件功能的常见冲突问题:Laravel在渲染邮件模板时会自动注入内置的$message变量,该变量是Illuminate\Mail\Message类的实例对象,你向模板传递的自定义参数也使用了message作为键名,导致变量被覆盖。模板渲染调用htmlspecialchars处理内容时拿到的是对象而非你提交的字符串内容,就抛出了该错误。

修复步骤

1. 修改Controller邮件传参

修改ContactController.php中storeForm方法的Mail::send传参部分,把message键名改为不会冲突的自定义名称(比如user_message):

\Mail::send('email', array(
    'name'=> $request->get('name'),
    'phone'=> $request->get('phone'),
    'email'=> $request->get('email'),
    // 替换原message键名,避免和内置变量冲突
    'user_message'=> $request->get('message')
), function ($message) use ($request) {
    $message->from($request->email);
    $message->to('olindo.testing@gmail.com')->subject('Hello Admin | New Appointment');
});

2. 同步修改邮件模板变量调用

打开你的email.blade.php文件,把所有引用{{ $message }}输出用户留言的位置,全部替换为{{ $user_message }}即可。

可选优化:修复表单冗余属性

你提交的Contact.blade.php中表单标签重复定义了action属性,建议删除空的那个避免异常:

<!-- 修改前 -->
<form action="" method="post" action="{{ route('contact.save') }}">
<!-- 修改后 -->
<form method="post" action="{{ route('contact.save') }}">

内容的提问来源于stack exchange,提问作者ivanantonov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:27:04