我尝试使用此处列出的方法Rails attachments inline are not shown correctly in gmail在标准的ActionMailer视图中呈现内嵌图像。
我的邮件中的代码:
attachments.inline["sample.png"] = {
mime_type: "image/png",
encoding: "base64", # Including this line causes byte sequence error
data: File.read('public/sample.png')
}
在邮件视图中:
image_tag(attachments["sample.png"].url)
给出熟悉的ruby UTF-8字节序列错误:
invalid byte sequence in UTF-8
为了解决这个问题,我尝试了以下方法:
attachments.inline["logo.png"] = {
mime_type: "image/png",
data: Base64.encode64(File.read('public/logo.png'))
}
以及
attachments.inline["logo.png"] = File.read('public/logo.png')
使用上面显示的相同image_tag
语法。
这两个都解决了UTF错误,但我在视图中留下了这个荒谬的网址:
<img src="cid:5707a64ededbc_7bd83ffd648601e029875@localhostname.mail">
PNG图像有效,可在标准HTML视图中正确呈现。我使用Rails 4.2.5和Ruby 2.2.4
修改
这有效:
邮件程序:
attachments.inline["cape.png"] = {
mime_type: "image/png",
# encoding: "base64",
content: Base64.encode64(File.read(Rails.root.join("public/", "cape.png")))
}
查看:
= image_tag "data:image/png;base64,#{attachments['logo.png'].read}"
然而,非常尴尬,我仍然想知道传统方法为什么不起作用。
答案 0 :(得分:0)
在我的应用程序中,我只使用
attachments.inline["logo.png"] = File.read('public/logo.png')
它适用于我