Description
WordPress sends email with PHP’s mail() function, which most hosts either block or deliver straight to spam. DadsFam SMTP replaces it with a real authenticated SMTP connection, so your password resets, contact forms and WooCommerce order emails actually arrive.
Everything described below works on every site. Nothing is disabled, blurred out, time-limited or reduced.
Set up in about two minutes
Pick your provider from the list and the host, port and encryption fill themselves in. Enter your username and password, save, then send a test email. The test shows you the full SMTP conversation, so if something is wrong you can see exactly which step failed.
Supported providers
Gmail, Outlook and Office 365, SendGrid, Mailgun, Amazon SES, Brevo, Postmark, SparkPost, Zoho Mail, Yahoo Mail, Hostinger, cPanel, and any custom SMTP server.
Features
- 13 pre-configured providers with automatic host, port and encryption defaults
- Per-provider setup notes built into the interface, including the common gotchas
- AES-256-CBC encrypted credentials — passwords are never stored as plain text
- Full sender control — From Name, From Email, Reply-To and Return-Path
- Unlimited email logging with status, subject, recipient, connection and timestamp
- Retention control — keep logs for as many days as you choose, or forever
- One-click resend of any logged email
- Full email body viewer in a sandboxed preview frame
- CSV export of your entire delivery history
- Send test email with live SMTP diagnostic output
- Connection test that opens a real socket and speaks SMTP, without sending anything
- Deliverability checker for SPF, DKIM, DMARC and MX records
- Email health score combining DNS authentication, configuration and real send history
- Delivery failure alerts by email
- Blocking mode stops all outgoing mail on staging sites while still logging attempts
- Suppression list for addresses and domains that must never be contacted
- Analytics with a seven-day delivery chart and per-connection success rates
- WooCommerce diagnostics — confirm store emails route correctly and test each type
- Dashboard widget with sent, failed and success rate at a glance
- Backup and migrate your configuration as JSON
- Documented hook API for developers
WooCommerce
DadsFam SMTP hooks in at a late priority, so it wins over WooCommerce’s own From address settings and your store emails always send from the address you configured. The diagnostics screen flags any mismatch between the two and lets you test-send each WooCommerce email type.
Declared compatible with High-Performance Order Storage and Cart & Checkout Blocks.
Extending the plugin
The plugin exposes documented actions and filters — dfsmtp_configure_mailer, dfsmtp_after_configure_mailer, dfsmtp_mail_failed, dfsmtp_mail_logged, dfsmtp_save_settings, dfsmtp_settings_page_end, dfsmtp_nav_pages and others — so you can layer your own behaviour onto the send pipeline. The full list is documented in the header of dadsfam-email-smtp.php.
An optional commercial add-on, DadsFam SMTP PRO, is built on this same hook API for stores and agencies sending at higher volume. It is a separate plugin and is not required — this plugin is complete on its own.
A word about PRO
Right, let me be straight with you, because I hate being sold to as much as you do.
Everything above is free and it stays free. Sending your mail through a proper SMTP server is not a premium feature. Saving your provider details, encrypting your password, logging what went out and resending one that failed are not premium features. Those are things a plugin like this should just do, and if I put them behind a paywall I would be taking the mickey.
There is a PRO add-on. It exists because I am a dad in Cape Town, and this is one of the things that puts food on the table at my house. That is the honest reason. Not “unlock your potential”, not “supercharge your workflow”. Just: if this plugin got your email sending again and you can spare it, PRO helps me keep building.
What PRO adds is the stuff you only want once you are sending real volume — sending from more than one mailbox and routing each message to the right one, failing over to a backup server when your main one has a bad day, retrying failed sends on their own, open and click tracking, failure alerts into Slack or Discord, and a weekly delivery digest. That is convenience and automation. It is not the plugin working properly, because the plugin already works properly.
So if the free one does everything you need, brilliant. Genuinely. Use it, and I hope it saves you a frustrating afternoon chasing email that will not send. If you get to the point where the automation would save you real time, PRO is at plugins.dadsfam.co.za.
Either way, thanks for using something I built. — Zak, DadsFam
PRO adds:
- Multiple saved SMTP connections
- Smart routing by subject, sender or recipient domain
- Automatic failover to a backup server
- Auto-retry of failed emails
- Open and click tracking
- Slack, Discord and webhook failure alerts
- Weekly delivery digest and hourly send limits
External services
This plugin does not connect to any service of its own. It has no home-phoning, no analytics and no licence checks.
It does, however, exist to hand your website’s email to an SMTP server that you choose and configure. That server is a third party service, and what it receives is entirely determined by your own settings.
What is sent: the emails your WordPress site produces — sender, recipients, subject, message body and any attachments — together with the username and password you entered, so the server will accept them.
When it is sent: only when WordPress sends an email, and only once you have entered SMTP details and saved them. With no details entered, the plugin sends nothing anywhere.
Where it is sent: to the host you type into the settings, and nowhere else. The plugin includes ready-made host and port presets for a number of well-known providers purely so you do not have to look them up. A preset is only a shortcut for filling in the form; selecting one does not contact anybody, and no provider is contacted unless you have entered credentials for it and WordPress sends an email.
Because you choose the provider, you are agreeing to that provider’s terms. The presets included cover, among others:
- Google Gmail / Workspace — terms, privacy
- Microsoft Outlook / Microsoft 365 — terms, privacy
- Amazon SES — terms, privacy
- SendGrid (Twilio) — terms, privacy
- Mailgun — terms, privacy
- Postmark — terms, privacy
- Brevo — terms, privacy
- Zoho Mail — terms, privacy
If you use your own mail server, or a provider not listed above, then that server is the only third party involved and its own terms apply.
Support
Email: support@dadsfam.co.za
Website: https://www.dadsfam.co.za
Installation
- Upload the
dadsfam-email-smtpfolder to/wp-content/plugins/, or install through Plugins Add New. - Activate the plugin.
- Go to DadsFam SMTP Settings and choose your provider.
- Enter your credentials and save.
- Go to DadsFam SMTP Test & Tools and send a test email.
FAQ
-
Gmail keeps rejecting my password.
-
Gmail will not accept your normal account password over SMTP. Turn on 2-Step Verification, then generate an App Password under Google Account Security App passwords, and use that instead.
-
My host blocks port 25.
-
Almost all do. Use port 587 with TLS, or 465 with SSL. If neither connects, use the connection test to confirm whether the problem is the network or your credentials, then ask your host whether outbound SMTP is permitted.
-
Are my SMTP passwords safe?
-
Passwords are encrypted with AES-256-CBC using a key derived from your site’s own
AUTH_KEY, so a stolen database dump does not expose them. They are also never included in a configuration export. -
Will this work with WooCommerce?
-
Yes. The plugin runs after WooCommerce and overrides its From address, so store emails send from your configured, authenticated address. There is a diagnostics screen for testing each WooCommerce email type.
-
Does logging slow my site down?
-
No. Each send writes one indexed row, and the log list never loads message bodies. Old entries are purged automatically on a daily schedule according to your retention setting.
-
How do I stop a staging site emailing real customers?
-
Turn on blocking mode under Settings Delivery Controls. Nothing is delivered, but every attempt is still logged so you can confirm what the site would have sent.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“DadsFam SMTP” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “DadsFam SMTP” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.0.7
- Added: a plain-English “A word about PRO” note in the readme — what stays free, why the optional add-on exists, and what it does. No features were moved behind a paywall.
- No changes to how the plugin sends, logs or tests email.
2.0.6
- Changed: uninstall now removes only this plugin’s own data, addressed by exact name — its three options, its scheduled event and its log table — instead of sweeping the options table for anything sharing the “dfsmtp_” prefix. Data belonging to a separate add-on that happens to use the same prefix is no longer removed; each plugin cleans up only what it owns, and the optional PRO add-on removes its own data through its own uninstall routine.
- Changed: uninstall now runs its cleanup on every site of a multisite network rather than only the current one, so nothing is left behind on the other sites. The per-site “keep data on uninstall” preference is still honoured for each site.
2.0.5
- Security: an imported configuration file is now cleaned key by key against a list of the settings this plugin actually owns, with each value checked for what that setting is allowed to contain. Decoding a file is not the same as trusting it, and an edited export can no longer introduce settings the plugin does not own.
- Added: an External services section to this readme, setting out exactly what is sent to your SMTP provider, when, and where — along with the terms and privacy policies of the providers there are presets for.
- Fixed: the plugin header pointed at a page that did not exist.
- Changed: the text domain now matches the plugin slug, so the community translation tools can pick the plugin up.
2.0.4
- Security: stored SMTP passwords now use authenticated AES-256-GCM instead of AES-256-CBC, so a tampered value is detected rather than silently decrypted into something else. Passwords saved by earlier versions continue to work and are read transparently.
- Security: removed the fallback that stored a password as plain text or base64 if encryption failed. If a server genuinely cannot encrypt, the save is refused with a clear message instead of quietly saving an unprotected password.
- Changed: uninstall now removes everything under this plugin’s own option, transient and scheduled-event prefix generically, rather than listing add-on option names.
- Changed: tightened the inline justifications on the direct database calls used during uninstall and on the raw socket used by the connection test.
2.0.3
- Fixed: WooCommerce email types were identified by searching the subject line for keywords, so any email whose subject contained a word like “Completed” or “Invoice” was logged as a WooCommerce order email. The type now comes from WooCommerce’s own email object and is only recorded when WooCommerce actually sent the email.
- Fixed: failed sends did not record the WooCommerce email type, so a failed order email could not be told apart from any other failure in the log.
2.0.2
- Version number aligned with the separate PRO add-on. No functional change to this plugin.
2.0.1
- Fixed: the SMTP connection tester used an implicitly nullable parameter, which is deprecated in PHP 8.4 and produced a notice on newer hosts.
- Fixed: CSV export now passes the escape argument to fputcsv() explicitly. PHP 8.4 deprecates relying on the default, and the value used produces RFC 4180 output that spreadsheet software reads correctly.
- Verified compatible with PHP 8.0 through 8.4 and with WordPress 7.0.
2.0.0
- Fixed: a failed delivery could trigger an unbounded chain of failure-alert emails, exhausting PHP memory and overloading the mail server. The alert path is now guarded against re-entry.
- Fixed: the SMTP connection test now terminates commands with CRLF as RFC 5321 requires, so strict servers such as Microsoft 365 no longer hang or reject the handshake.
- Fixed: the suppression list now matches whole addresses and domains rather than loose substrings, so a short entry can no longer block unrelated recipients.
- Fixed: uninstall now removes every option the plugin creates, including the log table version marker.
- Fixed: the log table is now created with all columns present rather than relying on a later migration step.
- Changed: email logging is unlimited on every site, with retention controlled by a “keep logs for N days” setting instead of a fixed entry cap.
- Changed: CSV export and the full email body viewer are available on every site.
- Changed: the plugin no longer overrides the WordPress core “weekly” cron schedule.
- Changed: admin styles are served from an enqueued stylesheet instead of an inline style block.
- New: documented hook API so add-ons can extend the send pipeline and admin screens.
- Upgrading from 1.6.x preserves all settings and log entries.
1.6.3
- Routing rules with an empty match value are skipped instead of capturing every email.
- WooCommerce email detection moved to a hook-based flag consumed by a single outgoing email.
- The log list view no longer selects the body column, preventing memory exhaustion on large logs.
1.5.0
- New email health score combining DNS authentication, configuration and send history.
- New dashboard widget.
1.4.0
- Configuration backup and migrate as JSON.
- Guided first-run setup.
1.2.0
- Blocking mode for staging sites.
- Suppression list.
- SPF, DKIM, DMARC and MX deliverability checker.
1.0.0
- First release.
