You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 发送邮件时logo无法内嵌正文仅作为附件的问题求助

问题原因

你当前出现图片转为附件的核心原因是 $message->embed() 方法传入了远程HTTP链接,该方法仅支持传入本地文件的绝对路径,传入远程资源地址时Laravel无法正确识别为正文内嵌资源,就会默认转为附件发送。

当前实际效果
预期效果

可行解决方案

方案1:使用本地路径内嵌图片(推荐,兼容性最好)

将logo图片存到项目本地的public/assets/images/目录下,修改邮件模板的图片引用代码,使用public_path()获取本地文件的绝对路径:

<img src="{{$message->embed(public_path('assets/images/logo.png'))}}" style="max-width: 100px"/>

该方案会将图片直接内嵌到邮件内容中,绝大多数邮件客户端会默认显示,无需用户手动授权加载外部资源。

方案2:直接使用公开外链(无需内嵌,邮件体积小)

如果你的logo已经上传到公网可直接访问的服务器,不需要内嵌的话可以直接去掉$message->embed()包裹,直接写图片的公网链接:

<img src="https://itecounsel.com/public/assets/images/logo.png" style="max-width: 100px"/>

注意要确保该链接无访问权限校验、公网可直接访问,缺点是部分邮件客户端会默认拦截外部图片,需要用户手动开启显示。

方案3:直接嵌入远程图片内容

如果你必须使用远程资源、不想存到本地,可以用embedData方法直接读取远程图片内容嵌入:

<img src="{{$message->embedData(file_get_contents('https://itecounsel.com/public/assets/images/logo.png'), 'logo.png', ['mime' => 'image/png'])}}" style="max-width: 100px"/>

使用该方案需要确保PHP配置的allow_url_fopen处于开启状态,允许读取远程资源。

注意事项

  • 图片尽量使用png、jpg等通用格式,避免使用webp等兼容性较差的格式
  • 测试阶段可使用邮件测试工具验证显示效果,避免正式发送时出现样式异常

内容的提问来源于stack exchange,提问作者Rajin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 07:15:04