在浏览器中预览邮件通知

时间:2018-02-05 10:37:23

标签: php laravel laravel-5 laravel-5.5

根据Laravel,根据to the documentation,我可以通过控制器返回Mailable以在浏览器中显示它。它有助于预览邮件。

有没有办法在浏览器中预览邮件通知?

我试过了:

return (new MyNotification())->toMail($some_user);

但它不起作用:

  

Response内容必须是实现__toString()," object"的字符串或对象。给出。

5 个答案:

答案 0 :(得分:4)

在控制器的功能中:

 $message = (new \App\Notifications\MyNotification())->toMail('example@gmail.com');    
 $markdown = new \Illuminate\Mail\Markdown(view(), config('mail.markdown'));

return $markdown->render('vendor.notifications.email', $message->toArray());

只需更改通知类的名称(并在必要时传递参数),然后在浏览器中单击URL即可预览。

答案 1 :(得分:2)

您无法呈现Notification。您可以在toMail()中呈现您使用的Mailable。例如,如果Mailable被称为SomeMailable

public function toMail($user)
{
    return (new SomeMailable($user))->to($user->email);
}

然后你可以用:

渲染Mailable
return new SomeMailable($some_user);

答案 2 :(得分:0)

对我来说,要预览toMail()方法的特定通知需要一个Notifiable实例,而不仅仅是一个电子邮件地址,因此以下代码对我有用:

    $notification = new \Illuminate\Auth\Notifications\VerifyEmail();

    $user = \App\User::where('email', 'example@gmail.com')->first(); // Model with Notifiable trait

    $message = $notification->toMail($user);

    $markdown = new \Illuminate\Mail\Markdown(view(), config('mail.markdown'));

    return $markdown->render('vendor.notifications.email', $message->toArray());

答案 3 :(得分:0)

在Laravel 5.8中,您现在可以预览它,就像您可以使用Mailable一样。

Route::get('mail-preview', function () {
    return (new MyNotification())->toMail($some_user);
});

更多详细信息在这里: https://sampo.co.uk/blog/previewing-mail-notifications-in-laravel-just-got-easier

答案 4 :(得分:0)

尝试一下(在Laravel 5.6之后通过测试)

$message = (new \App\Notifications\YourNotification()->toMail($notifiable);

return app()->make(\Illuminate\Mail\Markdown::class)->render($message->markdown, $message->data());