diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2015-10-19 16:56:13 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2015-10-19 16:56:13 +0000 |
commit | 3795c22730f470146b02110a168276dce45755a4 (patch) | |
tree | 3ca38d55cf930c3c7b19b5837e17d0bcadd2acca /app/models | |
parent | 1079089e75495fe94c4fa276c153748c0b08dad8 (diff) | |
download | redmine-3795c22730f470146b02110a168276dce45755a4.tar.gz redmine-3795c22730f470146b02110a168276dce45755a4.zip |
Makes project selection by subaddress optional (#20732).
git-svn-id: http://svn.redmine.org/redmine/trunk@14690 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/mail_handler.rb | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/app/models/mail_handler.rb b/app/models/mail_handler.rb index 770610427..e016dacfe 100644 --- a/app/models/mail_handler.rb +++ b/app/models/mail_handler.rb @@ -65,7 +65,7 @@ class MailHandler < ActionMailer::Base %w(project status tracker category priority).each do |option| options[:issue][option.to_sym] = env[option] if env[option] end - %w(allow_override unknown_user no_permission_check no_account_notice default_group).each do |option| + %w(allow_override unknown_user no_permission_check no_account_notice default_group project_from_subaddress).each do |option| options[option.to_sym] = env[option] if env[option] end if env['private'] @@ -365,11 +365,15 @@ class MailHandler < ActionMailer::Base end def get_project_from_receiver_addresses + local, domain = handler_options[:project_from_subaddress].to_s.split("@") + return nil unless local && domain + local = Regexp.escape(local) + [:to, :cc, :bcc].each do |field| header = @email[field] next if header.blank? || header.field.blank? || !header.field.respond_to?(:addrs) header.field.addrs.each do |addr| - if addr.local.to_s =~ /\+([^+]+)\z/ + if addr.domain.to_s.casecmp(domain)==0 && addr.local.to_s =~ /\A#{local}\+([^+]+)\z/ if project = Project.find_by_identifier($1) return project end |