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

Ruby on Rails 7 邮件内嵌图片无法显示问题求助

问题

我有一个Ruby on Rails 7应用,在本地localhost:3000的开发环境中运行。我可以发送邮件,但希望在邮件中内嵌logo图片(而非可下载附件)。以下是我的代码:

class XYZMailer < ApplicationMailer

  def create_xyz_email(first, second)
    @first = first
    @second= second
    attachments.inline['logo.png'] = File.read(Rails.root.join('app', 'assets', 'images', 'logo.png'))

    mail(to: @second.user.email, subject: "New XYZ #{@first.title} for you")

  end
end

我在HTML视图中尝试了多种写法,但均无效:

<%= image_tag attachments['logo.png'].url, alt: "logo", style: "text-align: center; max-width: 96px;" %>
<img src="cid:logo.png" alt="logo" style="text-align: center; max-width: 96px;">
<%= image_tag attachments['logo.png'].url %>
<img src="cid:logo.png" alt="XYZ Logo" style="text-align: center; max-width: 96px;">
<img src="data:image/png;base64,YourBase64EncodedImageHere" alt="logo" style="text-align: center; max-width: 96px;">
<img src="data:image/png;base64,<%= Base64.encode64(File.read('app/assets/images/logo.png')).gsub("\n", '') %>" alt="XYZLogo">

请问我该如何操作才能让图片在邮件中正常显示?

解决方案

1. 修正Mailer中图片读取的编码问题

当前用File.read读取图片可能因编码问题导致内嵌失败,需指定二进制模式读取:

attachments.inline['logo.png'] = File.read(Rails.root.join('app', 'assets', 'images', 'logo.png'), mode: 'rb')

mode: 'rb'确保以二进制格式读取图片文件,避免文本编码转换破坏图片数据。

2. 在ERB视图中使用正确的内嵌引用方式

在HTML邮件模板中,直接用cid:引用内嵌附件的文件名即可,可结合Rails的image_tag助手:

<%= image_tag "cid:logo.png", alt: "XYZ Logo", style: "text-align: center; max-width: 96px;" %>

或原生HTML写法:

<img src="cid:logo.png" alt="XYZ Logo" style="text-align: center; max-width: 96px;">

3. 确认开发环境邮件预览的兼容性

如果用letter_opener或letter_opener_web预览邮件,部分预览工具可能无法正确解析内嵌图片,建议直接发送到真实测试邮箱(如Gmail)验证。另外可显式指定邮件的content_type为multipart/related,确保邮件结构正确:

mail(to: @second.user.email, subject: "New XYZ #{@first.title} for you", content_type: "multipart/related")

4. 排查Asset Pipeline的影响

若logo图片经过Asset Pipeline编译,可改用Asset Pipeline的方法获取图片内容,避免路径或编译问题:

attachments.inline['logo.png'] = Rails.application.assets.find_asset('logo.png').to_s

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 15:13:35