Patch by Go MAEDA. git-svn-id: http://svn.redmine.org/redmine/trunk@17862 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/4.1.0
@@ -91,7 +91,7 @@ class MailHandler < ActionMailer::Base | |||
@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.to_s.strip) == 0 | |||
if sender_email.casecmp(Setting.mail_from_address) == 0 | |||
if logger | |||
logger.info "MailHandler: ignoring email from Redmine emission address [#{sender_email}]" | |||
end |
@@ -228,6 +228,12 @@ class Setting < ActiveRecord::Base | |||
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 |
@@ -112,6 +112,23 @@ class SettingTest < ActiveSupport::TestCase | |||
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 | |||
--- |