aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2018-09-25 16:58:00 -0700
committerDavid Heinemeier Hansson <david@loudthinking.com>2018-09-25 16:58:00 -0700
commit1087d70182e066d11c708b8eee43fee25ba1bc3f (patch)
tree002d73a82ee37410005ce96d1f9f675d3b77804f
parent96b6e7ce669cf412f931e700fafc99d6d7ef031a (diff)
downloadrails-1087d70182e066d11c708b8eee43fee25ba1bc3f.tar.gz
rails-1087d70182e066d11c708b8eee43fee25ba1bc3f.tar.bz2
rails-1087d70182e066d11c708b8eee43fee25ba1bc3f.zip
Handle all recipients of an email as part of the routing
-rw-r--r--lib/action_mailroom/router/route.rb9
-rw-r--r--test/unit/router_test.rb11
2 files changed, 17 insertions, 3 deletions
diff --git a/lib/action_mailroom/router/route.rb b/lib/action_mailroom/router/route.rb
index 316c77d711..6d0b922275 100644
--- a/lib/action_mailroom/router/route.rb
+++ b/lib/action_mailroom/router/route.rb
@@ -10,9 +10,9 @@ class ActionMailroom::Router::Route
def match?(inbound_email)
case address
when String
- inbound_email.mail.to.include?(address)
+ recipients_from(inbound_email.mail).include?(address)
when Regexp
- inbound_email.mail.to.detect { |recipient| address.match?(recipient) }
+ recipients_from(inbound_email.mail).detect { |recipient| address.match?(recipient) }
when Proc
address.call(inbound_email)
else
@@ -23,4 +23,9 @@ class ActionMailroom::Router::Route
def mailbox_class
"#{mailbox_name.to_s.capitalize}Mailbox".constantize
end
+
+ private
+ def recipients_from(mail)
+ Array(mail.to) + Array(mail.cc) + Array(mail.bcc)
+ end
end
diff --git a/test/unit/router_test.rb b/test/unit/router_test.rb
index 25a2651bb6..75701b669e 100644
--- a/test/unit/router_test.rb
+++ b/test/unit/router_test.rb
@@ -32,7 +32,16 @@ module ActionMailroom
inbound_email = create_inbound_email_from_mail(to: "first@example.com", subject: "This is a reply")
@router.route inbound_email
assert_equal "FirstMailbox", $processed_by
- assert_equal inbound_email.mail, $processed_mail
+ assert_equal inbound_email.mail, $processed_mail
+ end
+
+ test "single string routing on cc" do
+ @router.add_routes("first@example.com" => :first)
+
+ inbound_email = create_inbound_email_from_mail(to: "someone@example.com", cc: "first@example.com", subject: "This is a reply")
+ @router.route inbound_email
+ assert_equal "FirstMailbox", $processed_by
+ assert_equal inbound_email.mail, $processed_mail
end
test "multiple string routes" do