2026年11月12日
2026年11月12日
WordPress SMTP Plugins Compared: WP Mail SMTP, FluentSMTP, Post SMTP
This article is a localized edition of the Japanese original. Read the Japanese original
By default, WordPress sends email with the server's PHP mail() function. Mail sent this way has no authentication, so it is easily flagged as spam or never arrives. An SMTP plugin switches every email sent through wp_mail() (contact forms, password resets, WooCommerce order emails and so on) to a sending service such as Gmail or SendGrid.
This article compares four major SMTP plugins distributed on WordPress.org, focusing on what the free versions can do. It is based on each plugin's official description as of October 2026. Paid-version prices and features can change, so check each vendor's official site before buying.
Comparison of the main SMTP plugins
| Plugin | Active installations | Free-version mailers (main ones) | Mailers that need the paid version | Email log in the free version |
|---|---|---|---|---|
| WP Mail SMTP | 4 million+ | Gmail (Google Workspace), SendGrid, Mailgun, Brevo, Postmark, SparkPost, SMTP2GO, Other SMTP, and more | Microsoft 365 / Outlook, Amazon SES, Zoho Mail | No (paid version) |
| FluentSMTP | 700,000+ | Gmail, Google Workspace, Outlook / Microsoft 365, Amazon SES, SendGrid, Mailgun, Brevo, Postmark, SparkPost, Other SMTP, and more | None (there is no paid version) | Yes |
| Easy WP SMTP | 500,000+ | SendGrid, Mailgun, Mailjet, Brevo, Postmark, SparkPost, SMTP2GO, Other SMTP, and more | Gmail (Google integration), Microsoft 365 / Outlook, Amazon SES, Zoho Mail | Failed sends only (full log in the paid version) |
| Post SMTP | 300,000+ | Gmail (Gmail API), SendGrid, Mailgun, Brevo, Postmark, SparkPost, Other SMTP, and more | Microsoft 365 / Outlook, Amazon SES, Zoho Mail | Yes |
Active installations are the figures shown on WordPress.org (October 2026).
"Other SMTP" in the table means connecting to any SMTP server by entering a host name, port, username and password. You can use it for an email address on your hosting account or for Gmail's SMTP server. To connect Gmail this way, turn on 2-Step Verification for the Google account, then create and use an app password. Where the table says Gmail or Microsoft 365 "needs the paid version", it refers to OAuth integration (signing in with a Google or Microsoft account and granting permission).
What each plugin offers
FluentSMTP
FluentSMTP has no paid version, and every feature is free. Its WordPress.org description states that a paid version will not be released in the future either.
- Connects to Amazon SES, Gmail / Google Workspace and Outlook / Microsoft 365 through their APIs
- Email log, and resending from the log
- Lets you register several connections and use them by sender address. You can also set a backup connection (fallback) for when the primary one fails
- Notifies Slack, Discord, Telegram and others when sending fails
- Lets you keep credentials in
wp-config.phpinstead of the database - Has WP-CLI commands (such as
wp fluent-smtp test)
The settings screen is under Settings → FluentSMTP. It can also import settings from WP Mail SMTP and Easy WP SMTP.
wp plugin install fluent-smtp --activate
WP Mail SMTP
This is the plugin with the most users. You choose and configure a mailer with its setup wizard. The free version connects to many sending services, including Gmail (Google Workspace), but the email log, failure alerts, backup connection and conditional routing are features of the paid version (WP Mail SMTP Pro). Microsoft 365 / Outlook, Amazon SES and Zoho Mail integrations are also paid.
wp plugin install wp-mail-smtp --activate
Post SMTP
Even the free version shows a sending log and notifies you when sending fails. Gmail can be set up through the Gmail API in the free version (one-click setup is paid). Microsoft 365, Amazon SES and Zoho Mail integrations and automatic resending of failed emails are paid features.
wp plugin install post-smtp --activate
Easy WP SMTP
Its split between free and paid features is similar to WP Mail SMTP. The free version lets you review records of failed sending attempts (Debug Events). A log of every email and the Gmail, Microsoft 365, Amazon SES and Zoho Mail integrations are paid features.
wp plugin install easy-wp-smtp --activate
Which one to choose
- You want logs and a backup connection without paying: FluentSMTP
- You want to use Amazon SES or Microsoft 365 for free: FluentSMTP
- You want to connect Gmail (Google Workspace) via OAuth with a free plugin: WP Mail SMTP, FluentSMTP or Post SMTP
- You want paid support, or logs and reports in one package: a paid version such as WP Mail SMTP Pro
- You do not want another plugin: configure it with
phpmailer_initas described in the next section
Whichever you choose, setting up sender-domain authentication (SPF and DKIM) with your sending service makes your mail less likely to be marked as spam.
Setting up SMTP without a plugin (phpmailer_init)
With the WordPress phpmailer_init action, you can route wp_mail() through SMTP without a plugin. Put the following code in a dedicated file such as wp-content/mu-plugins/smtp.php rather than in your theme's functions.php, so the setting survives a theme change.
<?php
/**
* Plugin Name: SMTP settings
*/
add_action( 'phpmailer_init', function ( PHPMailer\PHPMailer\PHPMailer $phpmailer ) {
if ( ! defined( 'SMTP_HOST' ) ) {
return; // Do nothing if wp-config.php has no settings
}
$phpmailer->isSMTP();
$phpmailer->Host = SMTP_HOST;
$phpmailer->Port = SMTP_PORT;
$phpmailer->SMTPAuth = true;
$phpmailer->Username = SMTP_USER;
$phpmailer->Password = SMTP_PASS;
$phpmailer->SMTPSecure = PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS; // For port 587
} );
// Sender address and name (use an address on the domain you authenticated with the sending service)
add_filter( 'wp_mail_from', fn() => 'noreply@example.com' );
add_filter( 'wp_mail_from_name', fn() => 'Site name' );
Put the connection details in wp-config.php. For SendGrid, the username is the literal string apikey and the password is the API key you created.
<?php
define( 'SMTP_HOST', 'smtp.sendgrid.net' );
define( 'SMTP_PORT', 587 );
define( 'SMTP_USER', 'apikey' );
define( 'SMTP_PASS', 'SG.xxxxxxxx' ); // The API key you created
For sending services that use port 465 (SMTPS), set SMTPSecure to PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_SMTPS. If an SMTP plugin is active, its settings overlap with this code, so do not use the code.
Test after setting up
After setting up, send a test email and check that it arrives. Each plugin has a test-email screen. From WP-CLI you can send one like this.
wp eval 'var_dump( wp_mail( "you@example.com", "SMTP test", "This is a test." ) );'
If you get bool(false) or the email does not arrive, record the error with the wp_mail_failed action. If WP_DEBUG and WP_DEBUG_LOG are set to true in wp-config.php, it is written to wp-content/debug.log.
<?php
add_action( 'wp_mail_failed', function ( WP_Error $error ) {
error_log( 'wp_mail_failed: ' . $error->get_error_message() );
} );
Things to watch
- Activate only one SMTP plugin. With several active, it is hard to tell whose settings are used to send. When switching, deactivate the old plugin only after a test email succeeds with the new one
- New Amazon SES accounts start in the "sandbox" and can only send to verified addresses. To send to anyone, request production access (leaving the sandbox) from the AWS console
- Some hosting providers and clouds restrict connections to external SMTP servers (especially port 25). Use port 587 or 465, or choose a connection method that sends through an API
- If you put SMTP passwords or API keys in
wp-config.php, do not make the file's permissions broader than necessary
Summary
- For a full feature set at no cost, choose FluentSMTP. Amazon SES and Microsoft 365 integrations, logs and a backup connection are all free
- WP Mail SMTP supports many services, including Gmail, in its free version, but logs and alerts are paid
- Post SMTP offers a sending log and failure alerts in the free version. Easy WP SMTP keeps a full log only in the paid version
- If you do not want another plugin, set it up with
phpmailer_initand constants inwp-config.php - Whatever you choose, send a test email after setup and make sure errors can be checked with
wp_mail_failed
Related articles:
- How to send WordPress email through Mailgun SMTP (wp_mail via Mailgun)
- Sending email with AWS SES: domain verification, leaving the sandbox, and SMTP from WordPress
Questions about WordPress? The publisher of this site is based in Japan and replies in Japanese. Contact (Japanese)