summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2012-04-13 16:55:04 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2012-04-13 16:55:04 +0000
commit4edc30d157b06be04b51474ab23be9dd3855b56e (patch)
tree77ada579f4d326b633927973b0cf42f081b5598b
parentdd8d8e0560d9bef18da084cd299be4b246f6ed61 (diff)
downloadredmine-4edc30d157b06be04b51474ab23be9dd3855b56e.tar.gz
redmine-4edc30d157b06be04b51474ab23be9dd3855b56e.zip
Ignore emails with Auto-Submitted: auto-replied header (#10607).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9390 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/models/mail_handler.rb19
-rw-r--r--test/unit/mail_handler_test.rb18
2 files changed, 26 insertions, 11 deletions
diff --git a/app/models/mail_handler.rb b/app/models/mail_handler.rb
index e0c12f1a0..e920dbd5f 100644
--- a/app/models/mail_handler.rb
+++ b/app/models/mail_handler.rb
@@ -42,6 +42,12 @@ class MailHandler < ActionMailer::Base
super email
end
+ cattr_accessor :ignored_emails_headers
+ @@ignored_emails_headers = {
+ 'X-Auto-Response-Suppress' => 'OOF',
+ 'Auto-Submitted' => 'auto-replied'
+ }
+
# Processes incoming emails
# Returns the created object (eg. an issue, a message) or false
def receive(email)
@@ -54,12 +60,15 @@ class MailHandler < ActionMailer::Base
end
return false
end
- # Ignore out-of-office emails
- if email.header_string("X-Auto-Response-Suppress") == 'OOF'
- if logger && logger.info
- logger.info "MailHandler: ignoring out-of-office email"
+ # Ignore auto generated emails
+ self.class.ignored_emails_headers.each do |key, ignored_value|
+ value = email.header_string(key)
+ if value && value.to_s.downcase == ignored_value.downcase
+ if logger && logger.info
+ logger.info "MailHandler: ignoring email with #{key}:#{value} header"
+ end
+ return false
end
- return false
end
@user = User.find_by_mail(sender_email) if sender_email.present?
if @user && !@user.active?
diff --git a/test/unit/mail_handler_test.rb b/test/unit/mail_handler_test.rb
index 645a6f15f..73a93088d 100644
--- a/test/unit/mail_handler_test.rb
+++ b/test/unit/mail_handler_test.rb
@@ -359,12 +359,18 @@ class MailHandlerTest < ActiveSupport::TestCase
end
end
- def test_should_ignore_oof_emails
- raw = IO.read(File.join(FIXTURES_PATH, 'ticket_on_given_project.eml'))
- raw = "X-Auto-Response-Suppress: OOF\n" + raw
-
- assert_no_difference 'Issue.count' do
- assert_equal false, MailHandler.receive(raw)
+ def test_should_ignore_auto_replied_emails
+ [
+ "X-Auto-Response-Suppress: OOF",
+ "Auto-Submitted: auto-replied",
+ "Auto-Submitted: Auto-Replied"
+ ].each do |header|
+ raw = IO.read(File.join(FIXTURES_PATH, 'ticket_on_given_project.eml'))
+ raw = header + "\n" + raw
+
+ assert_no_difference 'Issue.count' do
+ assert_equal false, MailHandler.receive(raw), "email with #{header} header was not ignored"
+ end
end
end