A Redmine plugin that adds per-tracker CC email addresses for issue notifications. When an issue is created or updated, the configured CC addresses for that tracker receive exactly one notification email, in addition to the normal per-user notifications that Redmine sends.
This is useful for routing issue notifications to shared mailboxes, mailing lists, ticketing systems, or any external address that should be kept in the loop for a specific tracker.
- Adds a "CC Mail Address" field to each tracker's configuration
- Supports multiple addresses separated by commas or semicolons
- Sends one email per notification event to the CC addresses (no duplicates)
- Works for both new issue (
issue_add) and issue update (issue_edit) notifications - CC delivery runs as a background job (non-blocking)
- Does not interfere with Redmine's normal per-user email delivery
- Redmine 6.0.0 or higher
- Ruby 3.1 or higher
-
Copy or clone this plugin into your Redmine
plugins/directory:cd /path/to/redmine git clone <repository-url> plugins/redmine_tracker_mail_cc
Or copy the directory manually so it ends up at
plugins/redmine_tracker_mail_cc/. -
Install dependencies:
bundle install
-
Run the plugin database migration:
bundle exec rake redmine:plugins:migrate NAME=redmine_tracker_mail_cc RAILS_ENV=production -
Restart Redmine.
-
Verify the plugin is installed by going to Administration > Plugins. You should see "Tracker Mail CC" listed with version 0.2.0.
- Go to Administration > Trackers.
- Create a new tracker or edit an existing one.
- Enter one or more email addresses in the CC Mail Address field, separated by commas or semicolons.
- Save the tracker.
From that point on, any issue notification for that tracker will send a single copy to the configured CC addresses.
| CC Mail Address field | Result |
|---|---|
support@example.com |
One address receives notifications |
a@example.com, b@example.com |
Both addresses receive one notification each |
a@example.com; b@example.com |
Same as above (semicolons also work) |
| (empty) | No CC emails are sent (default behavior) |
-
Roll back the plugin's database migration:
bundle exec rake redmine:plugins:migrate NAME=redmine_tracker_mail_cc VERSION=0 RAILS_ENV=productionThis removes the
mail_cccolumn from thetrackerstable. -
Remove the plugin directory:
rm -rf plugins/redmine_tracker_mail_cc
-
Restart Redmine.
The plugin has three main components:
- TrackerPatch -- adds the
mail_ccattribute to the Tracker model as a safe attribute so it can be edited via the admin UI. - MailerClassPatch -- prepends onto
Mailer's singleton class to override thedeliver_issue_addanddeliver_issue_editclass methods. After callingsuper(which handles normal per-user delivery), it enqueues a background job to send one email to the tracker's CC addresses. - TrackerCcDeliveryJob -- an Active Job that builds the notification email using Redmine's standard mailer methods, replaces the recipient with the CC addresses, and delivers it.
A Deface override adds the "CC Mail Address" text field to the tracker edit form (trackers/_form).
redmine_tracker_mail_cc/
app/
jobs/
tracker_cc_delivery_job.rb # Background job for CC delivery
config/
locales/
en.yml # English locale (field label)
db/
migrate/
001_add_mail_cc_to_trackers.rb # Adds mail_cc column to trackers
lib/
redmine_tracker_mail_cc.rb # TrackerPatch, MailerClassPatch, Deface override
init.rb # Plugin registration and patching
Gemfile # Plugin gem dependencies (deface)
README.md
docker compose up --build- The CC email is delivered as a background job on the
:mailersqueue, the same queue used by Redmine's built-indeliver_latercalls. - If the tracker's CC field is empty, no extra work is done -- the plugin is effectively a no-op for that tracker.
- The plugin depends on the
defacegem for injecting the form field. Ifdefaceis not available, the form field will not appear but the rest of the plugin still functions (you would need to setmail_ccvia the Rails console or API). - Make sure
Settings > Email notifications > Emission email addressis configured for SMTP delivery to work.
This plugin is open source. See the LICENSE file for details.