Joomla guide v1.0.0

MailGateway routes every outgoing Joomla email through a pool of SMTP and API gateways: automatic failover, circuit breaking and a log of every single send.

Overview

MailGateway routes every outgoing Joomla email through a pool of SMTP and API gateways: automatic failover, circuit breaking and a log of every single send.

Requirements

  • Joomla 4.4, 5 or 6 depending on the package version.
  • PHP 8.1 or later is recommended.
  • A recent backup before installation or update.

Installation

  1. Download the ZIP package and do not extract it.
  2. In Joomla, open System → Install → Extensions.
  3. Drop the ZIP into the installation area and wait for the confirmation message.
  4. Open the component from Components. If the package includes a plugin, check its status under System → Manage → Plugins.
  5. Review component permissions before opening it to the team.

Initial configuration

  1. Open the extension dashboard.
  2. Open Options and review global settings.
  3. Grant Create, Edit, Delete and Configure permissions to the appropriate groups.
  4. Create a first test item and check the frontend when a public view is provided.
  5. Enable bundled plugins or scheduled tasks only when they are needed.

Features

Nothing slips past

The plugin replaces MailerFactoryInterface in the dependency injection container, reseeds Mail::getInstance() by reflection for legacy callers, and catches raw new Mail() senders on the onMailBeforeSend event. Even elderly extensions are routed.

8 working transports

Plain SMTP plus seven HTTP APIs: SendGrid, Mailgun, Postmark, Brevo, Mailjet, SparkPost and a signed generic webhook. Each adapter maps the provider's response codes to transient or permanent failure — and that drives the retry logic.

5 selection strategies

Failover by priority, round-robin, weighted, random, or domain routing that wraps any of the other four. Switching is hot — no migration and no restart.

Persistent circuit breaker

Five failures inside 60 seconds trip a gateway's breaker. After a 300-second cooldown it goes half-open; another failure doubles the wait, capped at one hour. State lives in the database, so it survives every request and every restart.

Two-phase logging

The log row is opened with status sending before transmission, then closed with the attempts breakdown, the provider's message id and the sent timestamp. A hanging transport stays visible, and named.

Resend and EML export

Resend a message straight from its log entry, either through the pool or pinned to a specific gateway. Export a single row or a whole selection as .eml. Resending is capped at 10 actions per user per minute.

Install the package

The package deploys the component and the plugin, creates the four InnoDB tables, and pins the plugin's ordering to −200 so it runs ahead of everything else. It even seeds a first SMTP gateway from your existing Joomla mail settings, so the site keeps sending without you lifting a finger.

Declare your gateways

A shared fieldset (title, alias, type, state, priority, weight) plus a credential form specific to each provider. Add your domain rules, rate limit and daily quota. Credentials are encrypted before they reach the database.

First steps

  1. Start with a simple use case and non-sensitive data.
  2. Validate the result with the team that will use the extension.
  3. Record site-specific choices such as roles, automations, templates and integrations.
  4. Roll out gradually, then monitor logs and user feedback.

Screenshots

The interface of Smtp+
Extension administration interface.
Installing Smtp+
The standard Joomla extension installation screen.

Troubleshooting

The extension does not appear after installation
Check the installer message and the component/plugin status, then clear Joomla or WordPress caches.
An action is denied
Review the user group permissions, session token and any security restrictions.
The output does not match the site
Test with caching disabled, inspect template overrides and look for CSS or JavaScript conflicts.
An external integration fails
Check the URL, credentials, quotas and logs without copying secrets into a support request.

Updating and uninstalling

Before updating, back up files and the database, read the release notes, and test on a copy of the site. Export useful data before uninstalling. Removing a package may remove several related components, modules or plugins.