Simple SMTP

Plugin Banner

Simple SMTP

by Casey

Download
Description

Adds a simple, no-fuss SMTP settings to your WordPress installation that lets you define custom settings, which is especially useful for hosts with no control over the php mail functionality.

If logging is enabled, a new segment in the settings panel will show up with a 30-day overview of recent emails, and will automatically prune older logs. Please see the FAQ if you want a more permanent solution.

For more information, please see the project wiki on GitHub.

Environment and constant overriding (optional)

This plugin will prefer environmental and constant-stored values over the plugin-saved equivalent settings, making it easier to use this plugin via deployment.

These can be either stored in your systems env setup, or in wp-config.php as define( 'SEE_BELOW', 'your_value_here' );.

Accepted Parameters

  • SMTP_HOST (string) Mail server hostname.
  • SMTP_PORT (integer) Port address (usually 25, 465 or 587).
  • SMTP_AUTH (integer, 1 or 0) Pass below credentials to your mail server.
  • SMTP_USER (string) The mail username for this account.
  • SMTP_PASS (string) The password for the mailer account.
  • SMTP_FROM (string) Enforce all emails come from this email address.
  • SMTP_FROMNAME (string) Enforce all emails to have a certain email name.
  • SMTP_SEC (string) Use a particular email security method (accepts ‘def’ (default), ‘ssl’, ‘tls’ and ‘off’).
  • SMTP_NOVERIFYSSL (boolean) Disable validation of the SMTP server certificate (not recommended).
  • SMTP_LOG (boolean) Controls the logging capability and visibility.
  • SMTP_DISABLE (boolean) Disables the mailer. They will still be logged if enabled, but won’t send out.

It is recommended to store at least SMTP_PASS in your wp-config.php file (with the correct file permissions set). If the openssl extension is available, the plugin will attempt to encrypt the password in the database.

How do I fix SMTP errors?

This plugin works by instructing PHPMailer – the mail library WordPress have chosen – to use SMTP mode, and adds in the settings you choose. 9 times out of 10, the error messages you receive are configuration errors. PHPMailer provides a good guide to help you figure out these problems.

Troubleshooting – PHPMailer.

The one instance where an SMTP error can be caused by this plugin is if the SMTP password is stored in the database when the secret keys have been regenerated. You will need to re-save the password to refresh the encryption keys.

You can always get assistance from your host and/or SMTP service provider.

Plugin compatibility

When using the logging functionality, the plugin will store the logged emails in the posts table, as an invisible post type. Normally this should work completely fine, but if you have a plugin that scans custom post types and sends an email about them, there’s a chance the third-party plugin might get stuck in a loop. For plugins like this, it is best to disable the functionality on the logging post type (sbss_email_log).

The following plugins have had reported issues:
* Sucuri Security.

One or more of the settings are greyed out

This plugin supports being overridden by DEFINE, so please check to see that you are not setting a define for a WP Simple SMTP option. These are most commonly stored in the wp-config.php file.

The over-ride hierachy is as follows, with top being the most important.

  • Environmental variable.
  • Constant variable (wp-config define).
  • Multisite network settings.
  • Locally-configured settings.

How do I stop the logs from automatically purging?

The logs by default will auto-prune to avoid keeping sensitive details in logs and contributing to database bloat. But if you wish to keep the logs more permanently, then register the following hook (typically in your theme functions.php) to disable the auto-pruning functionality:

add_filter( 'simple_smtp_disable_log_prune', '__return_true' );

How is the SMTP password stored?

If openssl is available to PHP, then the password will be encrypted (not hashed) when stored in the database. If unavailable, the SMTP password will be saved into the database as plaintext. The more recommended way of storing the password is to define SMTP_PASS in your wp-config.php file, which should already be locked and inaccessible from the front-end.

Note: Multisite over-ride password is currently not encrypted. Please see this issue.

Can I change the amount of entries shown in the log view?

This can be adjusted by the ‘simple_smtp_log_table_max_per_page’ filter. Returning an integer value to this filter hook will adjust the table page limit.

Does this plugin support WordPress CLI?

Yes. With WP-CLI you can perform the following actions:

  • email-log View the log if enabled.
  • email-test Send a test email.

To view the available options and help documentation, run wp help or wp help <function name>.

Does this plugin work on WordPress Multisite?

Yes. Each site can have unique settings, unless overriding is on. The network will use the main site settings, so network admin emails will show up in the main site log.

Since version 1.2, network-activating the plugin grants special configuration options for super administrators. This includes the ability to set overrides and configure site admin access.

Why do I see capital texts next to the input boxes? (Debugging disabled input boxes)

To help diagnose disabled input boxes, when the WordPress site is in debugging mode, the input fields will show a small debug text to indicate where the setting came from.

  • CONFIG is the standard method of saving settings via the admin menu.
  • CONST are overrides typically set in either wp-config.php or your theme’s functions.php.
  • MULTISITE are network-defined overrides set in the Network Mail panel.
  • ENV are pulled from the machine/server environmental settings.

Can I report an issue, or contribute to development?

Yes! Please see our GitHub repository here for writing issues and/or making pull requests.

One of the easiest aspects to contribute to is the SMTP quick configuration segment. If you wish to maintain this aspect, suggest a new setting, or report broken entries, see the SMTP quick config wiki page.

Clean, No Ads!!!

By guguan123 on April 18, 2025

Perfectly and elegantly meets my needs, the best STMP plugin I've used so far.

Perfect for local Email solution

By alexmigf on August 23, 2024

The Simple SMTP plugin truly lives up to its name, offering a straightforward and effective solution for managing email communications, especially when paired with MailPit. I’ve been using it locally with great success, and it has become an indispensable tool in my workflow.

Simple and effective

By Dan Claudiu G. (dcgavril) on July 27, 2023

Thank you for developing this module, it works great and currently it doesn't include many other things that could bloat the site.

Perfect plugin for WP email

By zoomstop on July 15, 2023

Lots of bloated SMTP plugins happy to take your money. I appreciate the heck out of this free plugin. It's open source, works perfect, and does the job needed and only the job needed.

Works in multisite

By lenasterg on March 30, 2023

Does what it says.

Simply, Clean, straightforward, No Ads!

By Montri Udomariyah (anas_xrt) on July 6, 2022

As it titles, Why need complex UI and dirt on other plugin. go for this one, it's support WP-CLI. Save my day debuging host and mail server connection.

Fantastic!

By tony.h on June 8, 2022

A simple (no thrills) SMTP plugin that works with environmental variables in the wp-config.php file. 1. Install and activate the plugin 2. Define the values in wp-config.php docker-compose users: Define the values in the docker-compose.yml file and then add the variable to the wp-config. For example: define( 'SMTP_PASS ', getenv_docker('SMTP_PASS', '') );

Simple but powerful plugin

By Themeisle (themeisle) on April 13, 2022

Very well thought plugin with powerful configuration options to set up the SMTP connection.

Great plugin

By Benoit Chantre (benoitchantre) on December 20, 2021

  • Clean UI
  • Clean code
  • Support of environment variables
  • Email logs
  • No ads
Give it a try!

My go to mail-plugin

By Erik (kebbet) on September 14, 2021

Simple to use, no fuss. Easy to set up with constants. Support multisite!

This changelog has been auto-generated from soup-bowl/simple-smtp.\n\n

1.3.4.1

Changed

  • Fixes for issues highlighted in #175 by @DanielHudson2 in https://github.com/soup-bowl/simple-smtp/pull/181

Contributors

  • @DanielHudson2 made their first contribution in https://github.com/soup-bowl/simple-smtp/pull/181

Full Changelog: https://github.com/soup-bowl/simple-smtp/compare/1.3.4…1.3.4.1

1.3.4

Changed

  • Branding changes to comply with WordPress trademark policies.
  • Bump the dev-dependencies group with 5 updates by @dependabot[bot] in https://github.com/soup-bowl/wp-simple-smtp/pull/155
  • Bump the dev-dependencies group with 1 update by @dependabot[bot] in https://github.com/soup-bowl/wp-simple-smtp/pull/158
  • WordPress Coding Standards Linting by @soup-bowl in https://github.com/soup-bowl/wp-simple-smtp/pull/157
  • Automatic Changelog by @soup-bowl in https://github.com/soup-bowl/wp-simple-smtp/pull/159
  • Pipeline replacement for asset upload by @soup-bowl in https://github.com/soup-bowl/wp-simple-smtp/pull/160
  • Bump the dev-dependencies group with 2 updates by @dependabot[bot] in https://github.com/soup-bowl/wp-simple-smtp/pull/163
  • Bump phpunit/phpunit from 9.6.18 to 9.6.19 in the dev-dependencies group by @dependabot[bot] in https://github.com/soup-bowl/wp-simple-smtp/pull/167
  • Change log expiry via hook & expiry visibility by @soup-bowl in https://github.com/soup-bowl/wp-simple-smtp/pull/165
  • Verify post type before executing delete by @soup-bowl in https://github.com/soup-bowl/wp-simple-smtp/pull/169
  • Bump vlucas/phpdotenv from 5.6.0 to 5.6.1 in the dev-dependencies group by @dependabot[bot] in https://github.com/soup-bowl/wp-simple-smtp/pull/171

Full Changelog: https://github.com/soup-bowl/wp-simple-smtp/compare/1.3.3…1.3.4

Version 1.3.3

  • Verified working with WordPress 6.3.
  • Fix: $log_service deprecation notice (#146).
  • Added: None encryption setting (#148).

Version 1.3.2.2

  • Verified working with WordPress 6.1 and 6.2.
  • Fix: PHP warning on the CLI interface (#140).

Notice

You may notice there’s 3 unexpected new files in the wp-simple-smtp directory:

  • DOCKER_ENV
  • docker_tag
  • output.log

These files were unfortunately introduced during the deployment pipeline, and have subsequently been packaged into the release file. I’ve since added these to the exclusion list, so in later deployments they won’t be present.

Until next release, you can delete these files without detrimental effect. Next update should remove these anyway.

Version 1.3.2.1 (Hotfix)

  • Rollback: #116 fix regressed due to relying on a function not found in the general scope.

Version 1.3.2

  • Added: Mail view now displays from, cc, bcc & the headers stored when logging is enabled.
  • Fix: Infinite loop when a plugin hooks into the mail routine functions and sends an email (#116).

Version 1.3.1.1

  • Verified working with WordPress 6.0.

Note: #109 has not reached main yet, so the deployment hasn’t fully succeeded. However this release is purely to update the WordPress state, and is not required for GitHub & manual deployments.

Version 1.3.1

  • Added: Glance view on the dashboard to see mail usage (Thanks KebbetPR 101, PR 102).
  • Fix: Table view appears correctly on mobile (Thanks KebbetPR 93).
  • Fix: Log view table navigation (Thanks KebbetPR 106).

Version 1.3

The minor release version is bumped for capability changes and the log storage goes from indefinite to monthly. A filter is provided to reverse this change, and it does not take effect on new installs, but this will hopefully reduce the contribution to database bloat and data collection that can fall foul of GDPR restrictions (although users switching back to indefinite can benefit from privacy integrations).

  • Added: Read logged emails via WP-CLI.
  • Added: Status message from testing emails (#81).
  • Change: Uninstalling the plugin will remove the lingering logs (#70).
  • Change: (For new installs) logs purge automatically after a month (#71).
  • Change: Quick config settings now contained within plugin (#78).
  • Change: Tightened permissions to the log viewer (#74).
  • Fix: Incorrect capability type used by the log viewer. Thanks to Benoît Chantre #74.

Version 1.2.3

  • Add: WordPress CLI support. See the FAQ for usage details.
  • Change: Password not returned plaintext in settings (#61).
  • Fix: Multisite-only config caused an instantiation error (#67).

Version 1.2.2

  • Add: Filter for the log entries. Thanks to Kebbet #57.
  • Change: Input boxes clearer and more WordPress-standardised (#51, #52).
  • Fix: Use network_admin_url instead of crafting a URL. Thanks to Kebbet #53.
  • Fix: Notice when saving settings without password being set (#44).

Version 1.2.1

  • Change: Multisite listing table improvements. Thanks to Kebbet (#50).
  • Fix: Line break issue when viewing emails in the site log. Thanks to Kebbet #47.
  • Fix: Missed localisations in the multisite table. Thanks to Kebbet #45.

Version 1.2

  • New: Multisite settings for admin visibility and override settings (#6).
  • New: Sites in debug mode will show what stage has set the configuration item in the relevant box.
  • New: For sites using logging, ‘Erase Personal Data’ will remove requested email address entries from the log (#37).

Version 1.1.2

Confirmed working with WordPress 5.8.

Version 1.1.1

  • Verified working with WordPress 5.7.
  • Fix: Crash when sending emails with the email system disabled (#35).

Version 1.1

Minor update to include some new features and bug fixes.

Changes

  • New: You can now disable emails (#9).
  • New: Attachments are now logged, and will be resent if they are still available on the system (#14).
  • New: Key change detection when SMTP password encryption is used, to warn user the email dispatch may fail (#28).
  • Change: Custom HTML removed in favour of translatable HTML test email. Thanks to Kebbet for implementation (#26).
  • Fix: JavaScript error when viewing emails (#24).

Version 1.0.2

More translation fixes provided by @kebbet to display correct translations for the quick config selection tool, and kindly provided a pagination bugfix.

Changes

  • Fix: Quick config translations not loading, and missing i18n entities. Thanks Kebbet (#21).
  • Fix: Incorrect pagination if the log count was divisible by 5. Thanks Kebbet (#18).

Version 1.0.1

Merges @kebbet PR to fix translations that were bugged out due to a WP slug and textdomain mismatch.

Version 1.0 🎉

Nothing’s changed since it’s been pretty much stable all alpha (#15), but now marks it as stable.

Changes

Version 0.3.6

Minor improvements release, including:

  • SMTPSecure is now a configurable option (#11).
  • Log entries can now be deleted (#13).

Available on WordPress.org.

Version 0.3.5

  • When openssl is available, the password stored in the database will be encrypted.
  • Added a quick configuration option, to guide SMTP setup (less Googling).

This release has been tested and confirmed working with WordPress 5.6.

Available on WordPress.org.

Version 0.3.4

  • Confirmed working with WordPress 5.5.1.
  • Added option to disable SSL verification.
  • Multiple emails can be used in the test functionality.

Pre-release status has been silently dropped. The implication of pre-release alpha is that this is not ready for production, whereas this has been in-use for quite some time. This is still early days however, so the 0. release number will stay for now.

Available on WordPress.org.

Version 0.3.3 Alpha

Custom table has been deprecated in favour of storing logs within the posts table as a CPT.

Version 0.3.2 Alpha

Version 0.3.1 Alpha

Version 0.3 Alpha

Version 0.2 Alpha

Initial alpha release

First release of the WP Simple SMTP plugin. Testing of this release is much appreciated.

Features include:
* SMTP configuration handling (overrides mail()).
* Optional SMTP logging (basic functionality).

As with this release and ongoing releases, there are no dashboard ads or promotions.

While Alpha, this is not currently in the WordPress directory. To install, navigate to plugin store, click ‘Upload Plugin’, and upload the compiled ZIP to your site.

Back to top