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

Laravel中如何将邮箱数组传入邮件函数?解决单邮箱显示及视图传参问题

解决Laravel邮件发送的两个问题

咱们先逐个拆解你遇到的问题,再给你完整的修正代码:

问题1:邮件仅发送给单个邮箱的修复

你当前代码里的这行是核心问题:

$emails=$request['emails'][$i];

这里你直接取了$request['emails']数组的第$i个元素,导致$emails变成了单个邮箱字符串,而不是你期望的邮箱数组。后面的foreach循环其实是在遍历一个字符串(相当于遍历每个字符),自然只会发送给一个邮箱。

修复步骤:

  • 直接获取完整的邮箱数组:$emails = $request['emails'];
  • 在foreach循环里,要使用循环变量$email(单数)来指定收件人,而不是原数组$emails:$message->to($email)

问题2:将邮箱数组传入info_on_hand视图

要让视图能访问邮箱数组,只需要把$emails添加到你传递给视图的$data数组里即可。比如:

$data['emails'] = $emails;

之后在info_on_hand.blade.php视图里,你就可以直接用$emails变量来遍历或展示这个邮箱数组了(比如@foreach($emails as $email) {{ $email }} @endforeach)。

完整修正代码

// 获取完整的邮箱数组
$emails = $request['emails'];

// 将邮箱数组加入视图数据
$data['emails'] = $emails;

Mail::send('emails.info_on_hand', $data, function ($message) use($emails, $request) {
    $message->from('us@example.com', 'Name Company');
    
    // 遍历邮箱数组,逐个添加收件人
    foreach($emails as $email) {
        $message->to($email);
    }
    
    // 建议用$request->input()替代Input::get(),更符合Laravel现代版本的规范
    $subject = sprintf('Status: %s With VIN# %s is %s At Name', 
        $request->input('desc'), 
        $request->input('vin'), 
        $request->input('status')
    );
    $message->subject($subject);
});

额外小提示:如果你使用的是较新的Laravel版本,建议使用Mail::to($emails)->send()的语法,会更简洁:

Mail::to($emails)->send(new InfoOnHandMail($data));

不过上面的修正代码是基于你原来的写法调整的,保证兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:07:06