从MailMessage对象获取内容

时间:2018-07-25 15:23:46

标签: laravel markdown

我正在尝试创建一个系统,该系统将针对他们的帐户自动记录我的网站发送给用户的任何电子邮件通知的内容。

我是通过监听NotificationSent事件来实现的,该事件使我可以轻松访问Notifiable(我要存储其日志条目的对象)和{{1} }(定义已发送消息的对象)。

使用这些对象,我可以掌握Notification对象,但无法弄清楚如何呈现它。我希望它会有一个render方法,但是我找不到。大概还有其他一些对象MailMessage进行渲染。有任何线索吗?

理想情况下,我想要电子邮件的纯文本版本(降价)

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我有一个解决方案,可以满足我的要求。我蚕食了我为别的东西编写的代码,这使我走了很长一段路。有些步骤我不完全了解,因此这里可能会出现一些不必要的膨胀:

class LogNotification
{
    public function handle(NotificationSent $event)
    {
        //getting the MailMessage object
        $mailMsg = $event->notification->toMail($event->notifiable);

        //I think this is getting the additional variables from the 
        //MailMessage that are needed to render the view
        $msgData = array_merge($mailMsg->toArray(),$mailMsg->viewData);

        //I don't fully understand this. I get that the Markdown object is 
        //going to do the rendering, but I don't know why it needs to be 
        //instantiated with an empty View object
        $markdown = new \Illuminate\Mail\Markdown(view(), config('mail.markdown'));

        //Pass the renderText method the path to the markdown, and the message data
        $msgContent = $markdown->renderText($mailMsg->markdown, $msgData);
    }
}

希望这对某人有帮助(如果有人可以对Markdown对象实例化时发生的情况提供适当的解释,我将不胜感激)。