Laravel 5.3 引入了一个叫做 notifications 的新服务,它允许通过简单的流畅语法构建电子邮件(及其他通知):
return (new MailMessage)
->greeting('Hello!')
->line('One of your invoices has been paid!')
->action('View Invoice', $url)
->line('Thank you for using our application!');
如何在电子邮件通知中添加图片的简洁方法?我已经发布了供应商文件以修改基本模板。
我的想法是:
- 将
Illuminate\Notifications\Messages\SimpleMessage
扩展为一个新的本地类,类似于SimpleMediaMessage
,并添加一些额外的方法(例如:->image(src, url, alt)
) - 修改基本模板(或创建特定于
SimpleMediaMessage
的模板),循环遍历通过->image
构建的媒体数组 - 最后,注册一个自定义渠道,允许使用图片发送通知。
对于像在电子邮件中添加图片这样简单的事情,这似乎太复杂了。我漏掉了什么吗?是否有更好的方法?
编辑说明:
当我提到图片时,我指的是消息本身可见的横幅和跟踪图片(而不是作为单独附件)。
附加的图片显示了a)目前可以实现的内容,以及b)我正在寻找的内容。
第二次编辑:
重新阅读目前已发布的答案,特别是@Erics的回答,我发现只需要简单修改模板,您实际上可以做到以下几点:
->line("<img src='foo.example/bar.jpg' />")
需要修改模板以允许不安全的标记:
// Note this is in two spots - intro + outro
{{ $line }} --> becomes --> {!! $line !!}
该方法的缺点:
- 可能会存在安全问题,这也是使用{{}}而不是{!!!!}的原因
图片无法利用内联样式,除非你在邮件模板之外进行操作,例如:
->line(" < img style='max-width:570px;/* 为了使图像在电子邮件中显示良好的所有其他垃圾 */' src='foo.example.bar.jpg' /> ")
{!! !!}
而不是{{ }}
。这是否有风险取决于你和你的项目。 - Chris