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

Laravel 11发送邮件时出现Undefined array key 'name'错误求助

排查「Undefined array key "name"」邮件发送错误的解决方法

1. 验证规则与前端传参匹配检查

先确认ContactController中的请求验证规则包含name字段,示例:

$validated = $request->validate([
    'name' => 'required|string|max:255',
    // 其他字段验证规则
]);

同时检查前端表单的name字段是否正确设置(比如<input name="name">,避免别名拼写错误)。日志显示验证后$mailData无name键,核心原因大概率是验证阶段未包含该字段,或前端未传递。

2. 检查$mailData赋值逻辑

确保验证后的数组完整赋值给$mailData,避免手动拼凑时遗漏name:

  • 错误写法(遗漏name):
$mailData = [
    'email' => $validated['email'],
    'message' => $validated['message']
];
  • 正确写法:
// 直接使用验证后的全量数据
$mailData = $validated;

// 或明确指定包含name的字段
$mailData = [
    'name' => $validated['name'],
    'email' => $validated['email'],
    'message' => $validated['message']
];

3. 确认Mail::send传参正确性

检查调用邮件发送的代码,确保$mailData正确传递给ContactMail构造方法:

Mail::to(config('mail.from.address'))->send(new ContactMail($mailData));

若此处未传$mailData、或传递了不含name的错误变量,会导致Laravel解析邮件类时提前触发数组键不存在错误,进而无法进入构造方法。

4. 检查ContactMail构造方法定义

确保邮件类构造方法正确接收并处理$mailData:

protected $mailData;

public function __construct(array $mailData)
{
    $this->mailData = $mailData;
    // 可添加日志验证是否进入构造
    \Log::info('进入ContactMail构造方法', $mailData);
}

若参数类型未声明为array、或变量名不匹配,会导致传参失败,触发提前错误。

5. 临时调试确认$mailData内容

在Mail::send()前添加日志或调试输出,直观确认$mailData结构:

\Log::info('待发送邮件的mailData:', $mailData);
// 调试用:直接打印内容
dd($mailData);
Mail::to(...)->send(...);

内容的提问来源于stack exchange,提问作者Mr. Kenneth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:19:59