Sha256: 8604ab991e7c58492565d4ff86c98472857adda49d03fdcfe811bccc9b2ec61d

Contents?: true

Size: 1.39 KB

Versions: 3

Compression:

Stored size: 1.39 KB

Contents

module PremailerRails
  class Hook
    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
        needs_multipart = true
        message.parts.delete(message.html_part)
      elsif message.content_type =~ /text\/html/
        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

        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
          end
        else
          message.body = premailer.to_inline_css
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
premailer-rails3-1.3.1 lib/premailer-rails3/hook.rb
premailer-rails3-1.3.0 lib/premailer-rails3/hook.rb
premailer-rails3-1.2.0 lib/premailer-rails3/hook.rb