##// END OF EJS Templates
Merged r9390 from trunk....
Jean-Philippe Lang -
r9266:8fefb7c05bb9
parent child
Show More
@@ -42,6 +42,12 class MailHandler < ActionMailer::Base
42 super email
42 super email
43 end
43 end
44
44
45 cattr_accessor :ignored_emails_headers
46 @@ignored_emails_headers = {
47 'X-Auto-Response-Suppress' => 'OOF',
48 'Auto-Submitted' => 'auto-replied'
49 }
50
45 # Processes incoming emails
51 # Processes incoming emails
46 # Returns the created object (eg. an issue, a message) or false
52 # Returns the created object (eg. an issue, a message) or false
47 def receive(email)
53 def receive(email)
@@ -54,13 +60,16 class MailHandler < ActionMailer::Base
54 end
60 end
55 return false
61 return false
56 end
62 end
57 # Ignore out-of-office emails
63 # Ignore auto generated emails
58 if email.header_string("X-Auto-Response-Suppress") == 'OOF'
64 self.class.ignored_emails_headers.each do |key, ignored_value|
65 value = email.header_string(key)
66 if value && value.to_s.downcase == ignored_value.downcase
59 if logger && logger.info
67 if logger && logger.info
60 logger.info "MailHandler: ignoring out-of-office email"
68 logger.info "MailHandler: ignoring email with #{key}:#{value} header"
61 end
69 end
62 return false
70 return false
63 end
71 end
72 end
64 @user = User.find_by_mail(sender_email) if sender_email.present?
73 @user = User.find_by_mail(sender_email) if sender_email.present?
65 if @user && !@user.active?
74 if @user && !@user.active?
66 if logger && logger.info
75 if logger && logger.info
@@ -359,12 +359,18 class MailHandlerTest < ActiveSupport::TestCase
359 end
359 end
360 end
360 end
361
361
362 def test_should_ignore_oof_emails
362 def test_should_ignore_auto_replied_emails
363 [
364 "X-Auto-Response-Suppress: OOF",
365 "Auto-Submitted: auto-replied",
366 "Auto-Submitted: Auto-Replied"
367 ].each do |header|
363 raw = IO.read(File.join(FIXTURES_PATH, 'ticket_on_given_project.eml'))
368 raw = IO.read(File.join(FIXTURES_PATH, 'ticket_on_given_project.eml'))
364 raw = "X-Auto-Response-Suppress: OOF\n" + raw
369 raw = header + "\n" + raw
365
370
366 assert_no_difference 'Issue.count' do
371 assert_no_difference 'Issue.count' do
367 assert_equal false, MailHandler.receive(raw)
372 assert_equal false, MailHandler.receive(raw), "email with #{header} header was not ignored"
373 end
368 end
374 end
369 end
375 end
370
376
General Comments 0
You need to be logged in to leave comments. Login now