jekcms sends mail over SMTP (with a plain PHP mail() fallback) — there's no multi-provider driver abstraction built in. Here's what that actually means in practice, and how to get provider-grade deliverability anyway.
jekcms doesn't ship a classes/Mail/ driver architecture with separate Mailgun, Postmark, and Amazon SES classes. What it ships is a standard SMTP sender with a plain PHP mail() fallback if SMTP isn't configured. That's a smaller feature than a multi-provider abstraction layer, but it's not a limitation in practice: every transactional email provider worth using — Mailgun, Postmark, SES, Brevo, whatever you already trust — exposes a standard SMTP relay. Point jekcms's SMTP settings at that relay's host, port, and credentials, and you get that provider's deliverability and reputation infrastructure without jekcms needing a dedicated API driver for it.
SPF, DKIM, and DMARC: Do This Before Sending
This part has nothing to do with jekcms specifically and everything to do with how email works. Configure SPF and DKIM records in your DNS before sending any production email — your SMTP provider's control panel gives you the exact record values. Allow 24–48 hours for DNS propagation, then test with mail-tester.com before going live. A score below 8/10 indicates a configuration problem that will affect deliverability. Add DMARC in monitoring mode first (p=none), then tighten to quarantine and reject after reviewing the aggregate reports for a couple of weeks.
What jekcms Actually Logs
The built-in newsletter plugin logs sent messages to an email_logs table with columns for to_email, subject, status, template_slug, campaign_id, error_message, and sent_at. There's no opened_at/bounced_at tracking and no per-provider provider_message_id — jekcms records whether the send call succeeded or failed, not open/bounce events reported back by the provider. If you need open and bounce tracking, that comes from your SMTP provider's own dashboard (Mailgun, Postmark, and SES all offer this) rather than from jekcms's admin panel.
Unsubscribe Mechanics
For newsletter and digest emails, jekcms's mail sender adds a List-Unsubscribe header (plus List-Unsubscribe-Post: List-Unsubscribe=One-Click when a one-click URL is available) automatically when an unsubscribe link is passed in. This satisfies the one-click unsubscribe requirement Gmail and Yahoo enforce for bulk senders. There is no separate /api/v1/mail/* endpoint dedicated to bounce or unsubscribe handling — unsubscribes are handled through the newsletter plugin's own subscriber management, not a general-purpose transactional mail API.
Verifying DNS Records
After configuring your sending domain, verify the records are live before enabling production email:
# Check SPF record
dig TXT yourdomain.com +short
# Expected: something like "v=spf1 include:your-smtp-provider.com ~all"
# Check DKIM record
dig TXT selector._domainkey.yourdomain.com +short
# Expected: "k=rsa; p=MIGfMA0..."
# Check DMARC record
dig TXT _dmarc.yourdomain.com +short
# Expected: "v=DMARC1; p=none; rua=mailto:..."
Separate Sending Reputation for Newsletters
If you send both transactional email (password resets, order confirmations) and bulk newsletter email from the same jekcms installation, consider using a separate sending domain or subdomain for the two. A newsletter batch that gets flagged as spam shouldn't drag down the deliverability of your password-reset emails. This is a configuration choice on your SMTP provider's side — jekcms doesn't currently split sending domains per email type automatically.
Pre-Launch Email Testing Checklist
Before enabling production email, send test messages to accounts on Gmail, Outlook, Yahoo, and Apple Mail, and verify:
- Message lands in the primary inbox, not spam or promotions tab
- HTML rendering matches your template across all four clients
- The unsubscribe link (for newsletter sends) works and processes correctly
- DKIM signature shows
passin the Authentication-Results header - SPF check shows
passin the Received-SPF header - Reply-to address is monitored and functioning
Run this checklist after every DNS change, after switching SMTP providers, and after modifying email templates — a five-minute check prevents weeks of reputation damage that can take a month or more to recover from.
Choosing an SMTP Relay
Since jekcms talks to whatever SMTP host you configure, the practical choice is between providers, not between jekcms driver classes. A reasonable rule of thumb: pick a provider with a free or cheap low-volume tier for a small site, and one with dedicated IPs and strong deliverability guarantees if inbox placement is mission-critical (order confirmations, appointment reminders). Whichever you pick, the setup inside jekcms is the same three fields — host, port, credentials — in the mail settings screen.