A friendly SMTP plugin for WordPress. No third-party, simply using WordPress native possibilities.
There are A LOT of SMTP plugins for WordPress, some uses third-party libraries with no too much luck, others looks like the same plugin (almost identical source code) but with different name…
Most of them overwrites from address and from name fields ALWAYS, breaking functionality of some other plugins that send emails using wp_mail() function.
So the history repeats again, I can’t find one simple plugin that fits my needs, so I created one for myself and share it with you in the hope that you’ll find it useful.
If you’re happy with the plugin please don’t forget to give it a good rating, it will motivate me to keep sharing and improving this plugin (and others).
IMPORTANT: Support requests must be created using the Issues tab at the Github repository
It may work with older versions of PHP and WordPress (and it does in fact at the time of writing this), but I don’t support anything older than the versions mentioned above.
Just install in your WordPress like any other plugin, activate it and fill settings using your SMTP server details. If you’re not sure about what you need to put in each field, ask to your SMTP server support.
If you want to contribute to the development of this plugin fixing a bug or suggesting any improvement, feel free to submit a pull request to this repo.
wp-content/plugins/
directory of your WordPress installation (or install it directly from your dashboard) and then activate it from Plugins page.This plugin is just a way to tell WordPress something like: “Please dear WordPress, use my SMTP server to send the emails, not the web server.”
That means that this plugin doesn’t send you emails, when the plugin is enabled WordPress sends your emails using your SMTP server.
If you’re having trouble sending your emails, you can activate the debug mode in settings page. That activates the logging of the commands and data between WordPress and your SMTP server, and most of the time you will find useful information in your PHP error_log file.
Remember to turn off Debug Mode when you’re done with the troubleshooting to avoid raising your server load by generating unnecessary logs.
The location of the PHP error_log file it’s not the same in all servers, because it can be customized by the server admin. In all cases you’ll need to use a (S)FTP client to check it. Example of possible locations:
If you don’t know how to access to that file or you can’t see any useful information about the sending process on that log file, you need to contact with the support staff of your SMTP server to ask them for the information.
Gmail/Google Apps (and probably other servers too) only allows you to send emails using your account email address in the FROM header.
Be happy man, life is life… Sending an email successfully does not guarantee you that it will reach the destination, an email goes thru many email servers before reaching the recipient email inbox. And finally, if your email reach the server that handles the inbox for the destination email address, it’s this server who has the last word to decide if your email is going to be delivered to the recipient or not.
Lots of things can be considered to reject your emails in destination without any notice: Content of the email triggering spam filters (i.e. too many links in your email content) or recipient server policy, bad reputation of your domain or SMTP IP, missing recommendations (i.e. SPF record)… It’s a whole world man!
I would recommend you to check any of the services below, all of them provide a SMTP server to use and can help you to improve your email delivery.
Mailgun
Sendgrid
Mailjet
SparkPost
Elastic Email
MailRelay
Sendinblue
SMTP Error: Could not authenticate -> This indicates the server refused your authentication data, probably due to incorrect username or password, but other incorrect settings can cause this too (like a bad port or encryption). Double check you have entered correct information in settings and contact with your SMTP server support if all is ok from your side.
SMTP connect() failed -> This indicates WordPress was not able to connect with your SMTP server. Probably you have an error in the hostname, port or encryption settings. This error can happen also if your web hosting is blocking connections to your SMTP host or your SMTP host is blocking your for some reason.
As you know this plugin is made to be friendly with other plugins that makes changes to the WordPress default settings, respecting changes made by these third-party plugins.
Therefore the FROM Name setting is only used when the email has the default value for this field: WordPress
An example of plugin that makes your emails to be sent with the site name is BuddyPress (tested with BP 2.2.1).
Since version 1.1 you can do this. Below you can see an example of use.
define( 'SAR_FSMTP_USER', 'your_username' ); define( 'SAR_FSMTP_PASSWORD', 'your_password' ); define( 'SAR_FSMTP_HOST', 'smtp.example.com' ); // IMPORTANT! Don't use quotes for the SAR_FSMTP_PORT value! define( 'SAR_FSMTP_PORT', 587 ); define( 'SAR_FSMTP_ENCRYPTION', 'tls' ); // These two are optional. SAR_FSMTP_FROM must be a valid email according to is_email() WP core function. define( 'SAR_FSMTP_FROM', '[email protected]' ); define( 'SAR_FSMTP_FROM_NAME', 'Your Name' );
In 1.2 the following constants are added too:
define( 'SAR_FSMTP_DEBUG_MODE', 'error_log' ); define( 'SAR_FSMTP_ALLOW_INVALID_SSL', 'on' );
This is useful if you want to use the same settings network-wide in a WordPress network (multisite installation).