def collect_responses_and_parts_order(headers) #:nodoc:
      responses, parts_order = [], nil

      if block_given?
        collector = ActionMailer::Collector.new(lookup_context) { render(action_name) }
        yield(collector)
        parts_order = collector.responses.map { |r| r[:content_type] }
        responses  = collector.responses
      elsif headers[:body]
        responses << {
          :body => headers.delete(:body),
          :content_type => self.class.default[:content_type] || "text/plain"
        }
      else
        templates_path = headers.delete(:template_path) || self.class.mailer_name
        templates_name = headers.delete(:template_name) || action_name
        each_template(templates_path, templates_name) do |template|
          self.formats = template.formats
          responses <<  if lookup_context.view_paths.detect {|resolver| resolver.class.to_s == "MailEngine::MailTemplateResolver" }
                          {
                            :body => render_with_layout_and_partials(template.mime_type.to_sym.to_s),
                            :content_type => template.mime_type.to_s
                          }
                        else
                          {
                            :body => render(:template => template),
                            :content_type => template.mime_type.to_s
                          }
                        end
        end
      end

      [responses, parts_order]
    end
def collect_responses_and_parts_order(headers) #:nodoc:
      responses, parts_order = [], nil

      if block_given?
        collector = ActionMailer::Collector.new(lookup_context) { render(action_name) }
        yield(collector)
        parts_order = collector.responses.map { |r| r[:content_type] }
        responses  = collector.responses
      elsif headers[:body]
        responses << {
          :body => headers.delete(:body),
          :content_type => self.class.default[:content_type] || "text/plain"
        }
      else
        templates_path = headers.delete(:template_path) || self.class.mailer_name
        templates_name = headers.delete(:template_name) || action_name
        each_template(templates_path, templates_name) do |template|
          self.formats = template.formats
          responses <<  if lookup_context.view_paths.detect {|resolver| resolver.class.to_s == "MailEngine::MailTemplateResolver" }
                          {
                            :body => render_with_layout_and_partials(template.mime_type.to_sym.to_s),
                            :content_type => template.mime_type.to_s
                          }
                        else
                          {
                            :body => render(:template => template),
                            :content_type => template.mime_type.to_s
                          }
                        end
        end
      end

      [responses, parts_order]
    end
REASON TO OVERRIDE THIS METHOD:
 need to set layout and pass partial path to each format of mail template.

 Completed copied from lib/action_mailer/base.rb#665