2011-12-02 70 views
5

誰かが問題を指摘できますか?メールの添付ファイルがインラインで正しく表示されない

私のレール3.1アプリケーションメーラでインラインアタッチメントを使用しています。この手紙には、アマゾンw3サーバに保存されている画像も含まれています。

問題はGmailが文字を正しく表示しないことです。私は手紙にインラインアタッチメントを持っています。しかし、Gmailはこれらのファイルを添付ファイルとして表示します。手紙には、手紙自体を含む添付HTMLページも含まれています。 すべてのgmailディスプレイは、添付されたイメージの1つのBase64バージョンと思われるシンボルのセットです。

スクリーンショットを参照してください。

私はhereを投稿したので、必要な額が不足しているため画像を投稿できません。ここで

は私のメーラーのコードです:私はそれを簡単にするために細部を省略している

-if @image_url 
    = image_tag(attachments['offer_image'].url, :id => 'offer_image', :width => "320", :height => "320") 
-elsif @offer.image.nil? 
    = image_tag(attachments['blank'].url, :id => 'offer_image', :width => "320", :height => "320") 

attachments.inline['blank'] = File.read("#{Rails.root.to_s + '/app/assets/images/blank_500x500.png'}") 
attachments.inline['discount-deal-triangle'] = File.read("#{Rails.root.to_s + '/app/assets/images/discount-deal-triangle.png'}") 
mail(:to => @subscriber.email, :subject => subject) 

そしてここでは、ビューファイル内のコードです。

私は間違っていますか?

答えて

11

結局私は解決策を見つけました。あなたがする必要があることは、添付ファイルのMIMEタイプとエンコーディングを設定することだけです。

attachments.inline['blank'] = { 
           :data => File.read("#{Rails.root.to_s + '/app/assets/images/blank_500x500.png'}"), 
           :mime_type => "image/png", 
           :encoding => "base64" 
           } 
attachments.inline['discount-deal-triangle'] = { 
           :data => File.read("#{Rails.root.to_s + '/app/assets/images/discount-deal-triangle.png'}"), 
           :mime_type => "image/png", 
           :encoding => "base64" 
           } 

これは私のトリックでした。

5

ファイル拡張子をインライン配列で使用します。例:

attachments.inline['blank.png'] = 
    File.read(Rails.root.join('app', 'assets', 'images', 'blank_500x500.png') 

この方法では、Railsのファイルmime_typeencodingを推測します。少なくともRails 4.2はそうするでしょう。

https://stackoverflow.com/a/25810153/2041318を参照してください。ここでは、メーラーのインラインイメージに便利なヘルパーメソッドがあります。

0

私の質問以来、この質問は同じだが、別の根本的な原因であることがわかりました。

Rails 4を実行していて、Gmailで画像を表示するのに問題がある場合(ただしOutlook365やOSXメーラークライアントでは表示されません)、.svgファイルを表示しようとしていないことを確認してください。私はこれを書いており、あなたは.jpgまたは.pngフォールバックが必要ですこの日付の時点でGmailはそれらをサポートしていません。

+0

私はこの問題を抱えていますが、.jpg画像を使用しています。そのためOutlookはGmailではなくOffice 365です。理由をご存知でしょうか? –

+0

.jpgはすべてのメールクライアントでサポートされる必要があります。あなたのメールクライアントが信頼の問題のためにあなたのコンテンツを隠していないことを確認しましたか? SMTPはコンテンツスクリーニングの制限を引き起こす可能性があります。 – Gemtastic

関連する問題