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