我的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中显示为损坏的图片图标。难道我做错了什么?
好的,我自己解决了。诀窍是使用内容而不是数据。我的Base64编码字符串中也有一个必须删除的前缀。最终的解决方案是改变邮件:
attachments.inline["user.png"] = {
:content => @user.img.remove('data:image/png;base64,'),
:mime_type => "image/png",
:encoding => "base64"
}