【问题标题】:Laravel: How to embed image in an email as a content and not as an attachmentLaravel:如何将图像作为内容而不是附件嵌入电子邮件中
【发布时间】:2014-12-28 20:06:43
【问题描述】:

我已经搜索了在使用 Laravel 发送的电子邮件中嵌入图像的方法。我发现大多数人使用的方法是将图像作为附件嵌入。

<img src="{{$message->embed(asset('assets/img/logo.png'))}}" style="padding:0px; margin:0px" />

有没有办法在不作为附件的情况下嵌入图像?我尝试将图像转换为 base64 字符串,但这甚至不起作用。

【问题讨论】:

  • 我认为这不是一个好主意,因为电子邮件客户端中对内联(编码)图像的支持很少。有些允许它删除图像(实际上我认为主要的基于 Web 的电子邮件客户端 Gmail、Yahoo 等都不允许这样做)。
  • 但我确实收到了嵌入图像但不是作为附件的电子邮件
  • @BlackPearl 这并不意味着它适用于任何地方,也不意味着它是一个好主意。

标签: email laravel laravel-4


【解决方案1】:

不管是不是好东西……

你几乎拥有它。我想问题是asset() 函数正在生成一个完整的 url,而 Laravel 需要文件的路径。 Official Doc

试试这个:

<img src="{{ $message->embed('assets/img/logo.png') }}" style="padding:0px; margin:0px" />

【讨论】:

  • 这不会将文件作为附件嵌入吗?
  • @BlackPearl 我不这么认为。如果您查看我链接的官方文档。它声明它用于嵌入内联附件。此外,如果您向上滚动一点,您会看到附加文件的“正常”方法。
  • 究竟是什么?它作为附件附加?
  • 嗯...也许尝试使用embedData函数并传入base64字符串?
【解决方案2】:

您需要指定完整路径,

<img src='{{ $message->embed(public_path().'/img/image.jpg') }}'>

【讨论】:

    猜你喜欢
    • 2020-09-12
    • 2012-01-24
    • 2015-01-26
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 2011-10-30
    相关资源
    最近更新 更多