]> source.dussan.org Git - redmine.git/commitdiff
Fixed that text/plain attachments are added to issue description (#15684).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 18 Dec 2013 18:13:13 +0000 (18:13 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 18 Dec 2013 18:13:13 +0000 (18:13 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@12420 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/mail_handler.rb
test/fixtures/mail_handler/multiple_text_parts.eml
test/unit/mail_handler_test.rb

index 3c9857873e7f2307a6b2e0d56e2d8231f8771500..c100f8d977ab2adb2d255461e3fe54b1440f163d 100644 (file)
@@ -405,6 +405,11 @@ class MailHandler < ActionMailer::Base
             else
               [email]
             end
+
+    parts.reject! do |part|
+      part.header[:content_disposition].try(:disposition_type) == 'attachment'
+    end
+
     @plain_text_body = parts.map {|p| Redmine::CodesetUtil.to_utf8(p.body.decoded, p.charset)}.join("\r\n")
 
     # strip html tags and remove doctype directive
index c61bcb786eedc37085d2694a672144f8dceb0608..794caa3549b52d2bc41b3effa820fbcae47d5be4 100644 (file)
@@ -52,4 +52,11 @@ Content-Type: text/plain;
 
 The third one.
 
+--Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9
+Content-Transfer-Encoding: quoted-printable
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: attachment; filename="textfile.txt"
+
+Plain text attachment
+
 --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9--
index 7e0f80cf3beb220eb255e0b861debd2a9da29da1..785d16ffd1de80c5e79d8b8338e1f93de0fb8b35 100644 (file)
@@ -501,13 +501,21 @@ class MailHandlerTest < ActiveSupport::TestCase
     assert_equal 'd8e8fca2dc0f896fd7cb4cb0031ba249', attachment.digest
   end
 
-  def test_multiple_text_parts
+  def test_multiple_inline_text_parts_should_be_appended_to_issue_description
     issue = submit_email('multiple_text_parts.eml', :issue => {:project => 'ecookbook'})
     assert_include 'first', issue.description
     assert_include 'second', issue.description
     assert_include 'third', issue.description
   end
 
+  def test_attachment_text_part_should_be_added_as_issue_attachment
+    issue = submit_email('multiple_text_parts.eml', :issue => {:project => 'ecookbook'})
+    assert_not_include 'Plain text attachment', issue.description
+    attachment = issue.attachments.detect {|a| a.filename == 'textfile.txt'}
+    assert_not_nil attachment
+    assert_include 'Plain text attachment', File.read(attachment.diskfile)
+  end
+
   def test_add_issue_with_iso_8859_1_subject
     issue = submit_email(
               'subject_as_iso-8859-1.eml',