为了账号安全,请及时绑定邮箱和手机立即绑定

发送后显示 Laravel 通知(邮件消息)并带有降价

发送后显示 Laravel 通知(邮件消息)并带有降价

PHP
犯罪嫌疑人X 2022-08-19 15:48:44
我通过创建一个函数并将类插入到模型中,将发送到实体的每封电子邮件保存到数据库中。一切正常,主要目标是在收件人收到消息时完全按原样显示消息,并将我作为 发送的所有消息检索到页面。为了更容易地在foreach循环中检索每个特定消息的呈现,我认为最好从模型中获取它。storeEmailMailMessageEmailMessageUser这是我的通知类:class SimpleEmail extends Notification{    use Queueable;    private $link;    private $user;    /**     * Create a new notification instance.     *     * @return void     */    public function __construct($link)    {        $this->link = $link;        $this->user = Auth::user();    }    /**     * Get the notification's delivery channels.     *     * @param  mixed  $notifiable     * @return array     */    public function via($notifiable)    {        return ['mail'];    }    /**     * Get the mail representation of the notification.     *     * @param  mixed  $notifiable     * @return \Illuminate\Notifications\Messages\MailMessage     */    public function toMail($notifiable)    {           $mail = (new MailMessage)            ->from($this->user->email, $this->user->name)            ->subject('My Dummy Subject')            ->greeting('To: '.$notifiable->email)            ->action('Action Button', url($this->link))            ->line('Thank you for reading my message')            ->salutation('Friendly, '.$this->user->name);        $this->storeEmail($mail,$notifiable);        return $mail;    }    public function storeEmail($mail,$notifiable){        $email = new EmailMessage;        $email->sender_type = 'App\User';        $email->sender_id = $this->user->id;        $email->mail = $mail;        $email->save();        $notifiable->email_messages()->save($email);    }}Note:我正在使用Illuminate\Notifications\Messages\MailMessage我的类扩展Illuminate\Notifications\Notification我正在保存(新邮件消息)在$email->mail = $mail;如何显示邮件通知,就像我发送它时一样?对此的最佳解决方案是什么?提前致谢
查看完整描述

1 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

为了实现这一点:

1. 您可以创建一个访问器

2. 使用 Markdown 的方法。render

3. 传入您保存在 中的邮件的标记方法。renderstoreEmail

你可以在上面看到一个例子:

use \Illuminate\Mail\Markdown;


public function getRenderAttribute(){

    $markdown = new Markdown(view());

    return $markdown->render($this->mail['markdown'], $this->mail);

}


查看完整回答
反对 回复 2022-08-19
  • 1 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信