gpt4 book ai didi

php - 如何将图像添加到 Laravel 5.3 的新通知服务生成的电子邮件中?

转载 作者:IT王子 更新时间:2023-10-28 23:48:07 28 4
gpt4 key购买 nike

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!');

将图像添加到电子邮件通知的 Eloquent 方法是什么?我已经发布了供应商文件来修改基本模板。

我目前的想法是:

  • Illuminate\Notifications\Messages\SimpleMessage 扩展为一个新的本地类,沿用 SimpleMediaMessage 的方法并添加一些额外的方法(例如:->image (src, url, alt))
  • 修改基本模板(或创建一个特定于 SimpleMediaMessage 的模板,它循环遍历通过 ->image 构建的媒体数组
  • 最后,注册一个custom channel允许通知传递带有图像的通知。

对于像电子邮件中的图像这样简单的东西,这似乎很费力。我错过了什么吗?有没有更好的方法?

为清晰起见进行了编辑

当我提到图像时,我指的是在消息本身中可见的横幅和拖尾图像(不是作为单独的附件)。

所附图片以红色显示 a) 目前可以实现的目标,b) 以紫色显示我正在寻找的目标。

enter image description here

第二次编辑

重新阅读到目前为止发布的答案,尤其是@Erics,我发现通过对模板进行非常简单的修改,您实际上可以执行以下操作:

->line("<img src='foo.example/bar.jpg' />")

需要修改模板以允许不安全的标记:

// Note this is in two spots - intro + outro
{{ $line }} --> becomes --> {!! $line !!}

这种方法的缺点:

  1. 可能会引发安全问题,这是在 {!!!! 上使用 {{}} 的全部原因
  2. 图像不能利用内联样式,除非您在电子邮件模板之外进行,例如:

    ->line("< img style='max-width:570px;/* 所有其他使图像在电子邮件中看起来正常的垃圾 */' src='foo.example.bar.jpg'/> ")

最佳答案

您想如何附加?在电子邮件中,您可以引用完整路径并以典型的 HTML 格式将其添加到 View 中:

<img src="http://yoursite.com/path/to/image.png">

如果你想让它成为一个真正的文件附件,MailMessage 上有一个 ->attach()attachData 方法。这些通常用于 PDF 或文档附件等内容。

如果你想在源代码中附加和引用附件,那么我猜你需要像你提到的那样扩展类或回退到 Laravel 的 Mail::send 方法。

由于通知系统被设计为简单且固执己见,我想他们希望涵盖常见的用例,并且使用图像的完整路径与引用 cid: style 相比要简单得多.

关于php - 如何将图像添加到 Laravel 5.3 的新通知服务生成的电子邮件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40128532/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com