mirror of
https://github.com/meineerde/redmine.git
synced 2025-12-22 16:31:12 +00:00
Fix: Mail handler does not ignore emails sent from emission email address if Setting.mail_from includes display name (#30785).
Patch by Go MAEDA. git-svn-id: http://svn.redmine.org/redmine/trunk@17862 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
58ea5b9d53
commit
b0b8978ff8
@ -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
|
||||
---
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user