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

Laravel邮件发送成功但日志报错:Illuminate\Mail\SentMessage对象无法转换为字符串

Laravel邮件发送成功但日志报错:Illuminate\Mail\SentMessage对象无法转换为字符串

嘿,我帮你定位到问题根源了!

从你提供的日志栈跟踪可以看到,错误出现在app/Jobs/ProcessReport.php文件的第99行:你调用了info(Object(Illuminate\Mail\SentMessage))——也就是把Mail::send()方法返回的SentMessage对象直接传给了Laravel的info()日志函数,但这个函数要求传入字符串类型的日志内容,所以才会抛出“对象无法转换为字符串”的错误。

你的邮件发送逻辑本身是正常的(已经成功发送),只需要修正日志记录的代码就能解决这个报错,给你两个可行的方案:

方案一:记录简单的成功提示

如果你只需要记录邮件发送成功的状态,直接传递字符串即可:

// 先执行邮件发送
$sentMessage = Mail::to($request['semail'])->send(new ReportGenerated($report));
// 记录字符串格式的日志
info('报告邮件已成功发送给收件人:' . $request['semail']);

方案二:记录SentMessage的详细信息

如果你需要记录邮件的具体信息(比如消息ID、收件人详情等),可以提取SentMessage对象的属性,或者将其转为数组输出:

$sentMessage = Mail::to($request['semail'])->send(new ReportGenerated($report));
// 记录邮件的消息ID(部分邮件驱动支持,比如SMTP)
info('报告邮件发送成功,消息ID:' . $sentMessage->getMessageId());
// 或者将对象转为数组,记录完整详情
info('报告邮件发送详情:', (array) $sentMessage);

只要修正ProcessReport.php里那行错误的日志调用,这个报错就会消失啦!

备注:内容来源于stack exchange,提问作者Divyesh Jesadiya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 09:57:33