【问题标题】:How to create an inline image as an attachment from a Base64 string如何从 Base64 字符串创建内联图像作为附件
【发布时间】:2019-09-09 11:39:53
【问题描述】:

我的User 表中有一个名为img 的列。图像存储为 Base64 字符串。我尝试使用以下标签来显示图像:

<img src="data:image/png;base64,${user.img}" alt="User image" />

虽然这适用于开信器/预览模式,但 Gmail 似乎不支持此功能。

我现在正在尝试根据这篇文章将图像创建为内联图像:https://stackoverflow.com/a/39710468/891359

我不明白如何正确显示图像。我尝试了以下组合:

在我的邮件中:

attachments.inline["user.png"] = {
  :data => @user.img,
  :mime_type => "image/png",
  :encoding => "base64"
}

在我的模板中:

= image_tag attachments['user.png'].url

很遗憾,这在 Gmail 中显示为损坏的图像图标。难道我做错了什么?

【问题讨论】:

    标签: ruby-on-rails gmail actionmailer


    【解决方案1】:

    好的,我自己解决了。诀窍是使用内容而不是数据。我的 Base64 编码字符串中还有一个必须删除的前缀。最终解决方案是更改邮件:

    attachments.inline["user.png"] = {
      :content => @user.img.remove('data:image/png;base64,'),
      :mime_type => "image/png",
      :encoding => "base64"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-06
      • 2015-04-30
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 2017-04-29
      • 1970-01-01
      相关资源
      最近更新 更多