Browse Source

Ignore email keywords after truncation line (#8758).

git-svn-id: http://svn.redmine.org/redmine/trunk@13413 e93f8b46-1217-0410-a6f0-8f06a7374b81
tags/2.6.0
Jean-Philippe Lang 9 years ago
parent
commit
8ae41b4846

+ 3
- 3
app/models/mail_handler.rb View File

@@ -319,7 +319,7 @@ class MailHandler < ActionMailer::Base
else
@keywords[attr] = begin
if (options[:override] || @@handler_options[:allow_override].include?(attr.to_s)) &&
(v = extract_keyword!(plain_text_body, attr, options[:format]))
(v = extract_keyword!(cleaned_up_text_body, attr, options[:format]))
v
elsif !@@handler_options[:issue][attr].blank?
@@handler_options[:issue][attr]
@@ -347,7 +347,7 @@ class MailHandler < ActionMailer::Base
regexp = /^(#{keys.join('|')})[ \t]*:[ \t]*(#{format})\s*$/i
if m = text.match(regexp)
keyword = m[2].strip
text.gsub!(regexp, '')
text.sub!(regexp, '')
end
keyword
end
@@ -436,7 +436,7 @@ class MailHandler < ActionMailer::Base
end

def cleaned_up_text_body
cleanup_body(plain_text_body)
@cleaned_up_text_body ||= cleanup_body(plain_text_body)
end

def cleaned_up_subject

+ 9
- 9
test/fixtures/mail_handler/ticket_on_given_project.eml View File

@@ -30,6 +30,15 @@ sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et
malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
platea dictumst.

Project: onlinestore
Status: Resolved
due date: 2010-12-31
Start Date:2010-01-01
Assigned to: John Smith
fixed version: alpha
estimated hours: 2.5
done ratio: 30

--- This line starts with a delimiter and should not be stripped

This paragraph is before delimiters.
@@ -49,12 +58,3 @@ dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed,
massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo
pulvinar dui, a gravida orci mi eget odio. Nunc a lacus.

Project: onlinestore
Status: Resolved
due date: 2010-12-31
Start Date:2010-01-01
Assigned to: John Smith
fixed version: alpha
estimated hours: 2.5
done ratio: 30


+ 25
- 0
test/fixtures/mail_handler/ticket_with_duplicate_keyword.eml View File

@@ -0,0 +1,25 @@
Return-Path: <JSmith@somenet.foo>
Received: from osiris ([127.0.0.1])
by OSIRIS
with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
From: "John Smith" <JSmith@somenet.foo>
To: <redmine@somenet.foo>
Subject: New ticket on a given project
Date: Sun, 22 Jun 2008 12:28:07 +0200
MIME-Version: 1.0
Content-Type: text/plain;
format=flowed;
charset="iso-8859-1";
reply-type=original
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.2869
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

Project: ecookbook
Priority: High
Priority: Low

+ 27
- 0
test/fixtures/mail_handler/ticket_with_keyword_after_delimiter.eml View File

@@ -0,0 +1,27 @@
Return-Path: <JSmith@somenet.foo>
Received: from osiris ([127.0.0.1])
by OSIRIS
with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
From: "John Smith" <JSmith@somenet.foo>
To: <redmine@somenet.foo>
Subject: New ticket on a given project
Date: Sun, 22 Jun 2008 12:28:07 +0200
MIME-Version: 1.0
Content-Type: text/plain;
format=flowed;
charset="iso-8859-1";
reply-type=original
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.2869
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

Project: ecookbook

== DELIMITER ==

Priority: High

+ 14
- 0
test/unit/mail_handler_test.rb View File

@@ -856,6 +856,20 @@ class MailHandlerTest < ActiveSupport::TestCase
assert_equal issue.subject, 'New ticket on a given project with a very long subject line which exceeds 255 chars and should not be ignored but chopped off. And if the subject line is still not long enough, we just add more text. And more text. Wow, this is really annoying. Especially, if you have nothing to say...'[0,255]
end

def test_first_keyword_should_be_matched
issue = submit_email('ticket_with_duplicate_keyword.eml', :allow_override => 'priority')
assert issue.is_a?(Issue)
assert_equal 'High', issue.priority.name
end

def test_keyword_after_delimiter_should_be_ignored
with_settings :mail_handler_body_delimiters => "== DELIMITER ==" do
issue = submit_email('ticket_with_keyword_after_delimiter.eml', :allow_override => 'priority')
assert issue.is_a?(Issue)
assert_equal 'Normal', issue.priority.name
end
end

def test_new_user_from_attributes_should_return_valid_user
to_test = {
# [address, name] => [login, firstname, lastname]

Loading…
Cancel
Save