Laravel 5.5 在浏览器中渲染 Mailable 类型

Laravel 框架中提供了很方便快捷的面向对象风格的电子邮件相关功能,可以通过 Markdown 语法、Blade 模板引擎来制作邮件模板,然后通过扩展 Mailable 类来配置邮件相关的属性。最后通过 Mail::to() 方法即可快捷地发送邮件出去。有关邮件功能的详细实现可以参见官方文档. 但我们在制作自定义的邮件模板时,如何进行测试以确保在各种邮件客户端中正确显示,确是一个比较大的难题。尽管有一些类似 litmus 这样的工具可以解决邮件测试的问题,但是成本高昂。

另外一种适用于开发中进行邮件模板渲染测试的方法就是直接把最终生成的电子邮件显示在网页中(用于测试模板是否正常工作,不保证兼容性),这种方法的好处显而易见,能够快速检验模板是否正确,数据是否正确呈现,便于实时修改。尽管这是开发中非常普遍的应用场景,但在以往的版本中,想把 Mailable 扩展类与模板结合渲染到浏览器中查看却并不是一件非常便捷的事情。从 Laravel 5.5 版本开始,这个问题得到了改变,Mailable 类实现了 Renderable 接口(Contract),这样我们就能够通过一个url直接在浏览器中查看最终生成的电子邮件。

举个例子,我们首先通过 artisan 工具创建一个 UserWelcome 的 Mailable 扩展类:

php artisan make:mail UserWelcome --markdown=emails.user.welcome

然后,创建一个路由,来显示这个电子邮件:

Route::get('/mail', function() {
    return new \App\Mail\UserWelcome();
});

只要直接返回 UserWelcome 类的实例,由于它实现了 Renderable 接口,就可以直接显示在浏览器中。当我们访问这个 url,会看到:

这就是我们的电子邮件最终将呈现在用户邮箱中的样子。开发过程中只要这样验证即可,在最终发布之前,所有的邮件类和邮件模板,可以在真实的邮件客户端中,或者通过电子邮件专用的测试工具进行一次性地测试验证即可。可以避免了开发过程中反复进行测试验证,能够大大节省开发时间。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏服务端技术杂谈

进程内缓存使用技术方案

进程内缓存可以采用带锁的Map或者第三方库,或者自己实现进程内缓存管理,如ConcurrentHashMap,ThreadLocal,guava cache等。

30030
来自专栏web前端教室

【视频5分钟】如何保持不同页面间的统计数据一致性?

温馨提示:视频请点此观看 // 视频原文: 为了更好的掌握用户的需求,我们经常需要统计: 1、统计用户在站点的停留时长 2、收集页面链接的点击数量等 3、统...

217100
来自专栏小狼的世界

Ubuntu下安装IE

做网页开发,IE是不可忽视的用户群体,所以需要在Linux下也有IE才能方便调试,下面是安装步骤:

40830
来自专栏啸天"s blog

广告杀手

软件来自国外,所以对国内的软件以及机型并不是百分比适配,但经过测试是适配绝大大多手机的,所以小伙伴们基本可以放心使用~ 因为是国外的软件,所以默认语言是英文的,...

28620
来自专栏大数据和云计算技术

高速数据总线kafka介绍

1. Kafka的作用 在大数据系统中,常常会碰到一个问题,整个大数据是由各个子系统组成,数据需要在各个子系统中高性能,低延迟的不停流转。有没有一个系统可以同时...

49640
来自专栏性能与架构

使用内存数据库Redis做页面静态化

image.png 适用于被高频访问的、页面内容常需要更新的情况 例如首页,特点: 访问量很大 需要展示的内容很多,需要多次的数据库查询,数据库压力大 ...

31440
来自专栏性能与架构

linux 使用 mwget 实现多线程下载

linux中的wget是一个常用的下载命令,但它是单线程的 场景 我的项目中,用户上传图片时为了减轻服务器压力,直接把图片上传到了阿里云存储中,同时还希望自己...

509110
来自专栏应兆康的专栏

Processon 免费在线流程图

54260
来自专栏Java帮帮-微信公众号-技术文章全总结

项目管理——产品文档规划

项目管理——产品文档规划 一、本地文档如何管理 项目通过文件夹管理 经受过的项目比较多,我按照“开始月份~结束月份+项目名称”的方式来命名,方便后续回顾。 ? ...

45750
来自专栏从零开始学自动化测试

Appium+python自动化22-Android夜神模拟器

前言 Android SDK虽然也自带了模拟器,但是那速度会让你怀疑人生,并且不稳定经常卡死异常。夜神模拟器可以说是android模拟器里面的一个神器。 ...

79130

扫码关注云+社区

领取腾讯云代金券