lib/premailer-rails3/hook.rb in premailer-rails3-1.1.0 vs lib/premailer-rails3/hook.rb in premailer-rails3-1.2.0

- old
+ new

@@ -3,30 +3,40 @@ def self.delivering_email(message) # If the mail only has one part, it may be stored in message.body. In that # case, if the mail content type is text/html, the body part will be the # html body. if message.html_part - html_body = message.html_part.body.to_s + html_body = message.html_part.body.to_s + needs_multipart = true + message.parts.delete(message.html_part) elsif message.content_type =~ /text\/html/ - html_body = message.body.to_s - message.body = nil + html_body = message.body.to_s + message.body = nil + needs_multipart = PremailerRails.config[:generate_text_part] end if html_body premailer = Premailer.new(html_body) charset = message.charset - # IMPRTANT: Plain text part must be generated before CSS is inlined. - # Not doing so results in CSS declarations visible in the plain text - # part. - message.text_part do - content_type "text/plain; charset=#{charset}" - body premailer.to_plain_text - end unless message.text_part + if needs_multipart + # IMPORTANT: Plain text part must be generated before CSS is inlined. + # Not doing so results in CSS declarations visible in the plain text + # part. + if PremailerRails.config[:generate_text_part] \ + and not message.text_part + message.text_part do + content_type "text/plain; charset=#{charset}" + body premailer.to_plain_text + end + end - message.html_part do - content_type "text/html; charset=#{charset}" - body premailer.to_inline_css + message.html_part do + content_type "text/html; charset=#{charset}" + body premailer.to_inline_css + end + else + message.body = premailer.to_inline_css end end end end end