Inline attachments appear as downloadables

Hello,

I’m attempting to generate emails with inline attachments. I’m using
Action Mailer 4.1.6 and the attachment.inline method, but for some
reason all of my attachments are coming through as regular downloadable
attachments, not as inline attachments. Here’s the relevant code:

In emails_mailer.rb:

def send_email(email)
attachments.inline[‘receipt.jpg’] = {:data =>
File.read(“public/items/receipt.jpg”).force_encoding(“BINARY”),
:mime_type => “image/jpg”}
mail(to: email.recipient, subject: “Email sent on #{Date.today}”,
body: email.body)
end

In send_email.html.erb:

<%= image_tag attachments[‘receipt.jpg’].url %>

I’ve tried the solutions found here:

http://www.rubydoc.info/docs/rails/4.1.7/ActionMailer/Base

Still, the email always comes through as a downloadable image. I’m
using Rails 4.1.6.

Any advice or pointers in the right direction?

On Jan 16, 2015, at 2:25 PM, Thomas M. [email protected]
wrote:

Still, the email always comes through as a downloadable image. I’m
using Rails 4.1.6.

Any advice or pointers in the right direction?

I notice that you’re not setting the encoding to base64 as suggested in
the first link you posted.

Also, have you examined the actual email raw source as delivered? Even
after get the image properly encoded inline, it’s up to the email client
whether or not it decides to actually display it inline.

Scott R. wrote in post #1166818:

On Jan 16, 2015, at 2:25 PM, Thomas M. [email protected]
wrote:

Still, the email always comes through as a downloadable image. I’m
using Rails 4.1.6.

Any advice or pointers in the right direction?

I notice that you’re not setting the encoding to base64 as suggested in
the first link you posted.

Also, have you examined the actual email raw source as delivered? Even
after get the image properly encoded inline, it’s up to the email client
whether or not it decides to actually display it inline.

Good advice. I removed the base64 encoding because the image wasn’t
showing up at all.

I actually discovered the problem shortly after posting this: in
send_email, I am setting body: email.body. So the view will never
render.