2016-04-08 8 views
2

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.

+0

add 'Rails.root_path' vor Bild-URL. –

+0

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. –

+0

versuchen Sie, Ihre Live-Server-URL vor dem Bildpfad hinzuzufügen –

Antwort

0

In meiner Anwendung verwende ich nur

attachments.inline["logo.png"] = File.read('public/logo.png') 

Es funktioniert gut für mich

+0

Danke, habe das schon ausprobiert, aber wie ich oben in meiner Frage erklärt habe, wird die URL im 'image_tag' nicht korrekt angezeigt. –

Verwandte Themen