Laravel 5.7中如何将Mailable对象转换为纯文本版本?
解决Laravel 5.7从Mailable获取纯文本内容的问题
在Laravel 5.7中,Mailable对象的纯文本视图路径存储在textView受保护属性中,你可以通过以下步骤获取纯文本内容:
- 先确保Mailable完成构建:调用
build()方法(如果已经调用过render(),这一步可省略,因为render()会自动触发build()) - 通过反射获取
textView属性的值(该属性为protected,无法直接访问) - 获取Mailable公开的视图数据
viewData - 用Laravel视图门面渲染纯文本视图,得到最终纯文本内容
具体代码实现:
// 确保Mailable已构建 $mailable->build(); // 反射获取textView属性 $reflection = new ReflectionClass($mailable); $textViewProp = $reflection->getProperty('textView'); $textViewProp->setAccessible(true); $textView = $textViewProp->getValue($mailable); // 获取视图数据 $viewData = $mailable->viewData; // 渲染纯文本内容 $plainText = view($textView, $viewData)->render();
更简洁的自定义方案:
如果你的Mailable类是自定义的,可直接在类中添加公开方法来返回纯文本内容:
// 在你的Mailable类中新增方法 public function getPlainTextContent() { $this->build(); return view($this->textView, $this->viewData)->render(); } // 调用时直接使用 $plainText = $mailable->getPlainTextContent();
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

