Ruby on rails 如何在ActiveMailer中将base64图像作为内联附件添加到邮件中?

Ruby on rails 如何在ActiveMailer中将base64图像作为内联附件添加到邮件中?,ruby-on-rails,actionmailer,Ruby On Rails,Actionmailer,我正在尝试使用ActiveMailer在RubyonRails中以内联附件的形式发送base64图像,但它就是不起作用 我找到了添加附件的方法: def inline_base64(name, content) attachments.inline[name] = { mime_type: 'image/png', content: content, encoding: "base64" } end 我这样称呼这个方法 inlin

我正在尝试使用ActiveMailer在RubyonRails中以内联附件的形式发送base64图像,但它就是不起作用

我找到了添加附件的方法:

def inline_base64(name, content)
    attachments.inline[name] =
    {
      mime_type: 'image/png',
      content: content,
      encoding: "base64"
    }
  end
我这样称呼这个方法

inline_base64('first_client.png', client[:image64])
其中,第一个参数仅为名称,另一个是作为字符串的base64图像

在erb文件中,我尝试插入如下图像:

<%= image_tag attachments['first_client.png'].url, size:'90' %>

但当我收到邮件时,它只显示图像已损坏:


有人知道我该怎么做吗?

Base64是文件中数据的编码表示形式

请注意Base64和DataURL之间的差异

DataURL字符串以
data:image/png开头;base64、
或类似字符串。如果这是您的情况,那么您的base 64编码数据是
base\u 64=content.split(',')[1]

此base 64数据只是读取文件并将其数据编码为base 64的结果:

content = Base64.encode64(File.read('your/path.png'))
您只需撤消编码即可获得函数
File.read将返回的确切结果:

data = Base64.decode64(content)
您的方法将按以下方式结束:

def inline_base64(name, content)
  attachments.inline[name] = Base64.decode64(content)
end

如果您仍然收到损坏的图像,请检查您的
内容
是否以DataURL字符串开头,并将其删除。

Base64是文件中数据的编码表示形式

请注意Base64和DataURL之间的差异

DataURL字符串以
data:image/png开头;base64、
或类似字符串。如果这是您的情况,那么您的base 64编码数据是
base\u 64=content.split(',')[1]

此base 64数据只是读取文件并将其数据编码为base 64的结果:

content = Base64.encode64(File.read('your/path.png'))
您只需撤消编码即可获得函数
File.read将返回的确切结果:

data = Base64.decode64(content)
您的方法将按以下方式结束:

def inline_base64(name, content)
  attachments.inline[name] = Base64.decode64(content)
end
如果您仍然收到损坏的图像,请检查您的
内容是否以DataURL字符串开头,并将其删除