Ich versuche, Inline-Bilder in einer Standard-ActionMailer-Ansicht mit dem hier beschriebenen Ansatz zu rendern Rails attachments inline are not shown correctly in gmail.Inline-Anhänge können in ActionMailer nicht gerendert werden.
Mein Code in meinem Mailer:
attachments.inline["sample.png"] = {
mime_type: "image/png",
encoding: "base64", # Including this line causes byte sequence error
data: File.read('public/sample.png')
}
In Mail-Ansicht:
image_tag(attachments["sample.png"].url)
Gibt den vertrauten Rubin UTF-8-Byte-Sequenz-Fehler:
invalid byte sequence in UTF-8
Um Um dieses versuchte ich folgendes:
attachments.inline["logo.png"] = {
mime_type: "image/png",
data: Base64.encode64(File.read('public/logo.png'))
}
und auch
attachments.inline["logo.png"] = File.read('public/logo.png')
die gleiche Syntax image_tag
oben gezeigten benutzen.
die UTF Fehler Beide lösen, aber ich bin mit dieser unsinnigen URL in der Ansicht links:
<img src="cid:[email protected]">
Das PNG-Bild gültig ist und ordnungsgemäß in einer Standard-HTML-Ansicht macht. Ich bin mit Rails 4.2.5 Ruby 2.2.4
EDIT
Dies funktioniert:
Mailer:
attachments.inline["cape.png"] = {
mime_type: "image/png",
# encoding: "base64",
content: Base64.encode64(File.read(Rails.root.join("public/", "cape.png")))
}
Ausblick:
= image_tag "data:image/png;base64,#{attachments['logo.png'].read}"
Sehr peinlich, und ich wundere mich immer noch, warum der konventionelle Ansatz h funktioniert nicht.
add 'Rails.root_path' vor Bild-URL. –
Danke, habe das versucht. Es ist in der Lage, das Bild in Ordnung zu finden, so dass das Hinzufügen von 'Rails.root' das Problem nicht löst. –
versuchen Sie, Ihre Live-Server-URL vor dem Bildpfad hinzuzufügen –