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.php instead 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_init as 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_init and constants in wp-config.php
  • Whatever you choose, send a test email after setup and make sure errors can be checked with wp_mail_failed

Related articles:

Questions about WordPress? The publisher of this site is based in Japan and replies in Japanese. Contact (Japanese)

お気軽にご相談ください

お見積りへ お問い合わせへ
▲