summaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2015-10-19 16:56:13 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2015-10-19 16:56:13 +0000
commit3795c22730f470146b02110a168276dce45755a4 (patch)
tree3ca38d55cf930c3c7b19b5837e17d0bcadd2acca /app/models
parent1079089e75495fe94c4fa276c153748c0b08dad8 (diff)
downloadredmine-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.rb8
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