Jason Fleetwood-Boldt
2014-Jan-31 21:47 UTC
bug in 3.2.14 related to multipart mail sending using a format block
Dear Rails Core, I believe I have identified a bug related to passing a format block to a mail() method call (I identified this on Rails 3.2.14, have not tried other versions of Rails). Contrary to what is documented here http://guides.rubyonrails.org/action_mailer_basics.html, I was not able to successfully pass a format block to my mail method call like so: mail(:to => @user.email, :subject => email_subject) do |format| format.html { render layout: nil} format.text { render } end When passing a format block to mailer, this makes Gmail (web-based) and my OS X Mail client display the Plain-text alternative when it should be displaying the HTML version. In Gmail web interface it opens to the Plain text alternative, and if you "switch to Plain text" you actually see the HTML version which is pretty odd. (Gmail does not give you an option to view the alternative) Oddly, the very same mail mail message does display correctly when sent to an @mailinator.com address (which only displays the HTML). When you don't pass a format block to the mailer call, like so: mail(:to => @user.email, :subject => email_subject) ... the mail is displayed correctly in Gmail. I examined line-by-line the raw source of the two mail messages, and I noticed this: 1) In the working version (with a format block in my code), the plain text appears first above the HTML alternative. (I don't think this should matter at all, I'm just noting it in case it is significant). 2) Within the text/html section of the message, there are some headers. (You see this below the "mime part boundary" that looks something like ----==_mimepart_52ec14fb61916_a3ff60f2ed3f4146dd For the non-working version (with a format block), I see this header: Content-Transfer-Encoding: 7bit For the working version (without a format block), I see this header instead: Content-Transfer-Encoding: quoted-printable I'm not sure if either one is acceptable in the RFC standard, nor I have looked into the Rails code itself. However, obviously we cannot send emails that don't work in Gmail, so for us we need to use a workaround. (In my case I was able to easily remove the format block because all I was doing was setting the layout, which I could set globally on the mailer object instead.) Obviously the work-around is OK for me, but I thought I'd send this note as documentation for the archive. Regards, Jason FB -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-core+unsubscribe@googlegroups.com. To post to this group, send email to rubyonrails-core@googlegroups.com. Visit this group at http://groups.google.com/group/rubyonrails-core. For more options, visit https://groups.google.com/groups/opt_out.