Laravel:如何将图像作为内容而不是附件嵌入电子邮件中

Posted

技术标签:

【中文标题】Laravel:如何将图像作为内容而不是附件嵌入电子邮件中【英文标题】:Laravel: How to embed image in an email as a content and not as an attachment 【发布时间】: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 这并不意味着它适用于任何地方,也不意味着它是一个好主意。 Laravel 4: Cannot send email with inline embedding的可能重复 【参考方案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') '>

【讨论】:

以上是关于Laravel:如何将图像作为内容而不是附件嵌入电子邮件中的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像插入电子邮件消息正文而不是作为附件? [复制]

链接资源不是作为内联图像 C#

如何使用 Outlook 2010(无 smtp)和 python 发送带有嵌入图像(不是附件)的 HTML 格式电子邮件

逻辑应用和 Outlook 嵌入图像

(discord.py) 有啥方法可以自动保存嵌入图像?

在 MIME 中嵌入图像