CH Mail Delivery
Routes WordPress email through authenticated SMTP (Brevo) with configurable From/Reply-To. Self-updates from GitHub releases.
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/connormesec/ch-mail-delivery/archive/refs/heads/master.zipDeclares an update source (https://github.com/connormesec/ch-mail-delivery), so updates arrive through the plugin's own updater.
Readme
CH Mail Delivery
Routes all WordPress email through authenticated SMTP (Brevo) with a configurable From and Reply-To. Deployed across the club hockey site portfolio.
Why
Hostinger shared hosting silently discards unauthenticated PHP mail() (shared 100 emails/day account cap). Every site therefore sends through Brevo SMTP from one authenticated sending domain (connormesec.com — SPF/DKIM/DMARC verified). wp_mail() returning true on this host means nothing; only authenticated SMTP actually delivers.
Settings
Settings → Mail Delivery on each site:
- SMTP host / port / login / key — shared Brevo credentials (one account for the whole portfolio). The key is stored only in that site's database, never in this repo.
- From address — must stay on the authenticated sending domain or mail is dropped again.
- From name — per site; blank = the site's name.
- Reply-To — per site; where replies go (blank = the site admin email). Emails that set their own Reply-To (e.g. tryout notifications) are not overridden.
SMTP routing is skipped on .local (Local dev) hosts so Local's mail catcher keeps working.
Configure via WP-CLI
wp option update ch_maildel_settings --format=json \
'{"smtp_host":"smtp-relay.brevo.com","smtp_port":"587","smtp_login":"…","smtp_key":"…","from_email":"noreply@connormesec.com","from_name":"","reply_to":""}'
Releasing an update
- Bump the version in
ch-mail-delivery.php(header +CH_MAILDEL_VERSION), commit, push. - Create a GitHub release tagged
vX.Y.Zand tick "Set as the latest release." - Every live site shows the standard update prompt under Plugins within ~6 hours (immediately with a force update check).
Read the full README on GitHub →
Releases
These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.