← Blog • Published: Monday, 23 Oct 2023
ActionMailer CC and BCC multiple recipients
This is a short article on using CC and BCC in your ActionMailer mailers, to send emails to multiple recipients. Rails makes this really easy, but this article also walks you through some more complex examples of using these methods.
When you're building a Rails app, there'll probably come a time when you want to send emails to multiple people.
This could be for notifications, alerts, or even newsletters. ActionMailer comes with a straightforward way to do this, specifically through the use of the
cc: (carbon copy) and
bcc: (blind carbon copy) parameters.
In this short article I'll show you how to use these methods to send emails to multiple recipients in your Rails apps. Let's go!
ActionMailer mailers accept
bcc: parameters in their
This gives us a straightforward way to carbon copy (CC) or blind carbon copy (BCC) multiple recipients when sending emails, like this —
# app/mailers/welcome_mailer.rb # def welcome mail( to: "[email protected]", cc: ["[email protected]", "[email protected]"] bcc: ["[email protected]", "[email protected]"] ) end
For a more real-world example, consider a Rails app that's a forum site. You might want to send out emails to a primary administrator, and CC in all the other secondary administrators.
You might do that like —
# app/mailers/admin_mailer.rb # def admin_update_email secondary_admin_emails = Admin.where(role: "secondary").pluck(:email) mail( to: "[email protected]", cc: secondary_admin_emails ) end
For more information, you can also check out the official Ruby on Rails ActionMailer docs. I've linked directly to the information on the
bcc:, and a couple of others.
More advanced example
Here's a slightly more advanced example — Suppose you have a multi-tenant application where each tenant has its own set of administrators.
You want to send an email to the primary admin of each tenant, CC the secondary admins for each tenant, and BCC the super admin of the entire app.
Here's how you might structure your
# app/mailers/admin_mailer.rb # def multi_tenant_admin_update Tenant.all.each do |tenant| primary_admin_email = tenant.admins.primary.first.email secondary_admin_emails = tenant.admins.secondary.pluck(:email) super_admin_email = "[email protected]" mail( to: primary_admin_email, cc: secondary_admin_emails, bcc: super_admin_email ) end end
In this example, we iterate through each tenant, gather the necessary email addresses, and then send out an email.
We've combined the
bcc: parameters inside a single, more complex, mailer method.
bcc: parameters with ActionMailer's
They're a handy way to send emails to multiple recipients in your Ruby on Rails apps and are a handy feature of ActionMailer.