OSDN Git Service

Sets proper content type for plain text mails (#3970).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 24 Oct 2009 11:57:01 +0000 (11:57 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 24 Oct 2009 11:57:01 +0000 (11:57 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2961 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/mailer.rb
test/unit/mailer_test.rb

index 1a2e35e..3d5231d 100644 (file)
@@ -352,9 +352,14 @@ class Mailer < ActionMailer::Base
   # https://rails.lighthouseapp.com/projects/8994/tickets/1799-actionmailer-doesnt-set-template_format-when-rendering-layouts
   
   def render_multipart(method_name, body)
-    content_type "multipart/alternative"
-    part :content_type => "text/plain", :body => render(:file => "#{method_name}.text.plain.rhtml", :body => body, :layout => 'mailer.text.plain.erb')
-    part :content_type => "text/html", :body => render_message("#{method_name}.text.html.rhtml", body) unless Setting.plain_text_mail?
+    if Setting.plain_text_mail?
+      content_type "text/plain"
+      body render(:file => "#{method_name}.text.plain.rhtml", :body => body, :layout => 'mailer.text.plain.erb')
+    else
+      content_type "multipart/alternative"
+      part :content_type => "text/plain", :body => render(:file => "#{method_name}.text.plain.rhtml", :body => body, :layout => 'mailer.text.plain.erb')
+      part :content_type => "text/html", :body => render_message("#{method_name}.text.html.rhtml", body)
+    end
   end
 
   # Makes partial rendering work with Rails 1.2 (retro-compatibility)
index d58d559..cc6e6cf 100644 (file)
@@ -103,7 +103,8 @@ class MailerTest < ActiveSupport::TestCase
     journal = Journal.find(2)
     Mailer.deliver_issue_edit(journal)
     mail = ActionMailer::Base.deliveries.last
-    assert_equal 1, mail.parts.size
+    assert_equal "text/plain", mail.content_type
+    assert_equal 0, mail.parts.size
     assert !mail.encoded.include?('href')
   end