Operations
Mail delivery
Configure Redmine's outgoing SMTP connection at runtime and optionally deliver all mail through a database-backed queue.
Configure the SMTP server
- Open Administration → Plugins → Redmine UX Toolkit → Configure → Mail delivery.
- Enter the SMTP host, port, authentication method, user name, password and encryption mode supplied by your mail provider.
- Choose automatic STARTTLS for the usual submission port 587, TLS from connection start for the usual implicit-TLS port 465, or no encryption only when your server explicitly requires it, commonly on port 25.
- Save the settings. They apply to all outgoing Redmine mail without an application restart.
- Run Test connection. A successful result confirms the SMTP handshake and authentication, but does not send a message.
Keep Redmine's existing transport: leave the SMTP host blank. UX Toolkit then continues to use the mail settings from
configuration.yml.Ports, sender and stored password
- Changing the encryption option suggests port 587, 465 or 25 only when the current port is a standard value. A custom port is preserved.
- A
wrong version numbererror usually means implicit TLS was selected for a STARTTLS port such as 587. - Set the visible sender separately under Administration → Settings → Email notifications. The plugin transport does not overwrite that address.
- The SMTP password is encrypted with a key derived from Redmine's
secret_key_base. Keep that application secret stable and protect it with the same care as the database.
Enable the optional database queue
Enable Store all outgoing mail in the database when Redmine requests should not wait for the SMTP server. The request stores the complete message first; the central UX Toolkit Cron runner sends pending messages later in bounded batches.
- Install and verify the central runner described under Scheduler & reminders.
- Enable the database queue and select a batch size appropriate for the Cron interval and expected mail volume.
- Choose sent-message retention of 7, 30, 90, 180 or 365 days. Thirty days is the recommended balance between traceability and storage use.
- Save, trigger a normal Redmine notification, and confirm that the message first appears as pending and becomes sent after the next successful Cron run.
Cron is required: queued messages remain pending until a successful
redmine_ux_toolkit:run execution. Keep the queue disabled if synchronous delivery is required and no reliable Cron runner is available.Inspect and manage queued messages
- The list shows 25 records per page with recipients, subject, status, attempt count and a sanitized delivery error.
- Select records on the current page to delete them or send them immediately without waiting for Cron. A message already being sent cannot be selected.
- Retry failed messages after correcting the transport problem. An intentionally repeated send is also available for a record already marked sent.
- The settings overview records the last queue run and its sent and failed counts. Failed messages remain available until an administrator handles them; only sent records expire automatically.
- A sent status means the outgoing server accepted the message. It does not prove delivery to the recipient's inbox.
- If a worker stops during delivery, the message is marked failed because the final SMTP result may be uncertain. Review it before retrying to reduce duplicate mail.
Desktop and mobile settings
The same SMTP, queue and retention controls remain available on narrow screens. Use the images to compare the exact field order before changing a production configuration.


Troubleshooting checklist
- If the connection test fails, compare host, port and encryption mode first, then verify credentials and network access from the Redmine server.
- If mail remains pending, check the latest central scheduler timestamp and the queue-run status before retrying individual messages.
- If a saved password stops working after a server move, confirm that Redmine's original
secret_key_basewas retained. - If sent mail is not received, inspect the receiving server, spam filtering and delivery logs; the plugin can only confirm the SMTP handoff.
Database protection: the queue stores complete email messages, including attachments. Restrict access to the Redmine database and its backups accordingly.