@handler_options = options
sender_email = email.from.to_a.first.to_s.strip
# Ignore emails received from the application emission address to avoid hell cycles
- if sender_email.casecmp(Setting.mail_from_address) == 0
+ emission_address = Setting.mail_from.to_s.gsub(/(?:.*<|>.*|\(.*\))/, '').strip
+ if sender_email.casecmp(emission_address) == 0
if logger
logger.info "MailHandler: ignoring email from Redmine emission address [#{sender_email}]"
end
Object.const_defined?(:OpenID) && self[:openid].to_i > 0
end
- # Extracts an email address ("joe@example.com") from
- # Setting.mail_from ("Joe Bloggs <joe@example.com>")
- def self.mail_from_address
- self.mail_from.to_s.gsub(/(?:.*<|>.*|\(.*\))/, '').strip
- end
-
# Checks if settings have changed since the values were read
# and clears the cache hash if it's the case
# Called once per request
end
def test_should_ignore_emails_from_emission_address
+ emission_addresses = [
+ 'redmine@example.net',
+ 'Redmine <redmine@example.net>',
+ 'redmine@example.net (Redmine)'
+ ]
Role.anonymous.add_permission!(:add_issues)
- assert_no_difference 'User.count' do
- assert_equal false,
- submit_email(
- 'ticket_from_emission_address.eml',
- :issue => {:project => 'ecookbook'},
- :unknown_user => 'create'
- )
+ emission_addresses.each do |addr|
+ with_settings :mail_from => addr do
+ assert_no_difference 'User.count' do
+ assert_equal false,
+ submit_email(
+ 'ticket_from_emission_address.eml',
+ :issue => {:project => 'ecookbook'},
+ :unknown_user => 'create'
+ )
+ end
+ end
end
end
end
end
- def test_mail_from_address
- mail_from_strings = [
- 'joe@example.com',
- '<joe@example.com>',
- 'Joe Bloggs <joe@example.com>',
- 'display_name@example.com <joe@example.com>',
- 'joe@example.com (Joe Bloggs)',
- 'joe@example.com (display_name@example.com)'
- ]
-
- mail_from_strings.each do |from_value|
- with_settings :mail_from => from_value do
- assert_equal 'joe@example.com', Setting.mail_from_address
- end
- end
- end
-
def test_setting_serialied_as_binary_should_be_loaded_as_utf8_encoded_strings
yaml = <<-YAML
---