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
相关产品推荐
相关产品推荐

