Commits

jplang  committed 6ce3e5f

Ignore emails with Auto-Submitted: auto-replied header (#10607).

  • Participants
  • Parent commits 09ceb10

Comments (0)

Files changed (2)

File app/models/mail_handler.rb

     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)
       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?

File test/unit/mail_handler_test.rb

     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