Project

General

Profile

Defect #31549 » fixed-31549.patch

Yuichi HARADA, 2019-06-11 05:08

View differences:

app/models/mail_handler.rb
44 44
    options[:no_permission_check] = (options[:no_permission_check].to_s == '1')
45 45

  
46 46
    ActiveSupport::Notifications.instrument("receive.action_mailer") do |payload|
47
      mail = Mail.new(raw_mail.b)
47
      mail = Mail.new(Mail::Utilities.binary_unsafe_to_crlf(raw_mail.b))
48 48
      set_payload_for_mail(payload, mail)
49 49
      new.receive(mail, options)
50 50
    end
test/fixtures/mail_handler/thunderbird_with_utf8_body_and_lf_lineterminator_and_attachment.eml
1
To: redmine@somenet.foo
2
From: John Smith <JSmith@somenet.foo>
3
Subject: =?UTF-8?B?44OG44K544OI44Oh44O844Or?=
4
Message-ID: <cef02a8b-5359-58f3-6403-bc2bb3c93c43@somenet.foo>
5
Date: Mon, 10 Jun 2019 13:39:21 +0900
6
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
7
 Gecko/20100101 Thunderbird/60.7.0
8
MIME-Version: 1.0
9
Content-Type: multipart/mixed;
10
 boundary="------------6FE4347B4294DF3B19BB9898"
11
Content-Language: en-US
12

  
13
This is a multi-part message in MIME format.
14
--------------6FE4347B4294DF3B19BB9898
15
Content-Type: text/plain; charset=utf-8; format=flowed
16
Content-Transfer-Encoding: 8bit
17

  
18
To:redmine
19

  
20
 テストメールを送信します。
21

  
22
--------------6FE4347B4294DF3B19BB9898
23
Content-Type: application/zip; x-mac-type="0"; x-mac-creator="0";
24
 name="test.zip"
25
Content-Transfer-Encoding: base64
26
Content-Disposition: attachment;
27
 filename="test.zip"
28

  
29
UEsDBBQAAAAAAE8/xU4Mfn/YBAAAAAQAAAAIAAAAdGVzdC50eHR0ZXN0UEsBAhQAFAAAAAAA
30
Tz/FTgx+f9gEAAAABAAAAAgAAAAAAAAAAQAgAAAAAAAAAHRlc3QudHh0UEsFBgAAAAABAAEA
31
NgAAACoAAAAAAA==
32
--------------6FE4347B4294DF3B19BB9898--
test/unit/mail_handler_test.rb
415 415
    assert mail.subject.include?('New ticket on a given project')
416 416
  end
417 417

  
418
  def test_add_issue_with_utf8_body_and_lf_line_terminator_and_attachment
419
    assert_difference 'Issue.count' do
420
      issue = submit_email(
421
        'thunderbird_with_utf8_body_and_lf_lineterminator_and_attachment.eml',
422
        :issue => {:project => 'ecookbook'}
423
      ) do |email|
424
        # Ensure that line terminators are LF
425
        email.gsub!(/\r\n?/, "\n")
426
      end
427

  
428
      assert issue.is_a?(Issue)
429
      assert_equal 'テストメール', issue.subject
430
      assert_equal "To:redmine\r\n\r\n テストメールを送信します。", issue.description
431

  
432
      assert_equal 1, issue.attachments.size
433
      assert_equal 'test.zip', issue.attachments.first.filename
434
      assert_equal 118, issue.attachments.first.filesize
435
    end
436
  end
437

  
418 438
  def test_created_user_should_be_added_to_groups
419 439
    group1 = Group.generate!
420 440
    group2 = Group.generate!
(1-1/5)