@@ -42,6 +42,12 class MailHandler < ActionMailer::Base | |||
|
42 | 42 | super email |
|
43 | 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 | 51 | # Processes incoming emails |
|
46 | 52 | # Returns the created object (eg. an issue, a message) or false |
|
47 | 53 | def receive(email) |
@@ -54,12 +60,15 class MailHandler < ActionMailer::Base | |||
|
54 | 60 | end |
|
55 | 61 | return false |
|
56 | 62 | end |
|
57 |
# Ignore |
|
|
58 | if email.header_string("X-Auto-Response-Suppress") == 'OOF' | |
|
59 | if logger && logger.info | |
|
60 | logger.info "MailHandler: ignoring out-of-office email" | |
|
63 | # Ignore auto generated emails | |
|
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 | |
|
67 | if logger && logger.info | |
|
68 | logger.info "MailHandler: ignoring email with #{key}:#{value} header" | |
|
69 | end | |
|
70 | return false | |
|
61 | 71 | end |
|
62 | return false | |
|
63 | 72 | end |
|
64 | 73 | @user = User.find_by_mail(sender_email) if sender_email.present? |
|
65 | 74 | if @user && !@user.active? |
@@ -359,12 +359,18 class MailHandlerTest < ActiveSupport::TestCase | |||
|
359 | 359 | end |
|
360 | 360 | end |
|
361 | 361 | |
|
362 |
def test_should_ignore_ |
|
|
363 | raw = IO.read(File.join(FIXTURES_PATH, 'ticket_on_given_project.eml')) | |
|
364 |
|
|
|
365 | ||
|
366 | assert_no_difference 'Issue.count' do | |
|
367 | assert_equal false, MailHandler.receive(raw) | |
|
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| | |
|
368 | raw = IO.read(File.join(FIXTURES_PATH, 'ticket_on_given_project.eml')) | |
|
369 | raw = header + "\n" + raw | |
|
370 | ||
|
371 | assert_no_difference 'Issue.count' do | |
|
372 | assert_equal false, MailHandler.receive(raw), "email with #{header} header was not ignored" | |
|
373 | end | |
|
368 | 374 | end |
|
369 | 375 | end |
|
370 | 376 |
General Comments 0
You need to be logged in to leave comments.
Login now