{"id":306287,"date":"2026-06-05T17:29:51","date_gmt":"2026-06-05T17:29:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/nimblymail-smtp\/"},"modified":"2026-06-05T18:16:49","modified_gmt":"2026-06-05T18:16:49","slug":"nimblymail-smtp","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/nimblymail-smtp\/","author":23490387,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"NimblyMail SMTP","header_author":"NimblyMail Team","header_description":"A modern SMTP and email log plugin for WordPress. Improve deliverability via SMTP, Gmail, Resend, Amazon SES, or SendLayer, with full delivery logging.","assets_banners_color":"3c7aa8","last_updated":"2026-06-05 18:16:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/plugins.svn.wordpress.org\/nimblymail-smtp\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":60,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"nimblymail","date":"2026-06-05 17:29:26"},"1.0.1":{"tag":"1.0.1","author":"nimblymail","date":"2026-06-05 18:16:49"}},"upgrade_notice":{"1.0.0":"<p>Initial release of NimblyMail.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3562596,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3562596,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3562596,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3562596,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3562596,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3562596,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3562596,"resolution":"10","location":"assets","locale":"","width":1440,"height":900},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3562596,"resolution":"11","location":"assets","locale":"","width":1440,"height":900},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3562596,"resolution":"12","location":"assets","locale":"","width":1440,"height":900},"screenshot-13.png":{"filename":"screenshot-13.png","revision":3562596,"resolution":"13","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3562596,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3562596,"resolution":"3","location":"assets","locale":"","width":1440,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3562596,"resolution":"4","location":"assets","locale":"","width":1440,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3562596,"resolution":"5","location":"assets","locale":"","width":1440,"height":900},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3562596,"resolution":"6","location":"assets","locale":"","width":1440,"height":900},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3562596,"resolution":"7","location":"assets","locale":"","width":1440,"height":900},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3562596,"resolution":"8","location":"assets","locale":"","width":1440,"height":900},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3562596,"resolution":"9","location":"assets","locale":"","width":1440,"height":900}},"screenshots":{"1":"Dashboard \u2014 Delivery stats, connection status, queue health, deliverability summary, and recent email activity at a glance.","2":"Email Log \u2014 Searchable log table with status filters, bulk actions, and per-email detail view.","3":"Settings: Connection \u2014 Choose from nine supported mailers including Gmail OAuth, Outlook \/ Microsoft 365 OAuth, Amazon SES, Resend, SendLayer, Brevo, and ZeptoMail.","4":"Settings: Connection (Outlook \/ Microsoft 365) \u2014 Connect your Microsoft account in one click via NimblyMail's secure OAuth proxy \u2014 no Azure app registration required.","5":"Setup Wizard \u2014 Guided first-run configuration with auto-detection of existing SMTP plugins.","6":"Settings: Mail Queue \u2014 Turn on the background queue to defer wp_mail() calls; configure max attempts, batch size, exponential backoff, default priority, and a pause toggle.","7":"Mail Queue admin \u2014 Live view of pending, processing, and failed deliveries with per-row retry \/ cancel actions, last-error preview, and counts grouped by status.","8":"Settings: Developer Sandbox \u2014 Stop staging environments from sending real email. Log Only or Redirect mode, with an allowlist for addresses that should still be delivered.","9":"Deliverability Health Audit \u2014 Automated SPF \/ DKIM \/ DMARC \/ PTR audit of the active sender domain with mailer-aware requirements.","10":"Tools: Email Tester \u2014 Send a test email to verify your configuration works.","11":"Settings: Email Controls \u2014 Toggle individual WordPress notification emails on or off (over 25 triggers across 8 categories).","12":"Network Dashboard \u2014 Aggregated delivery stats, top failing sites, and per-site totals across the whole multisite network.","13":"Network Sites \u2014 Per-site summary table showing the active mailer, override count, and recent sent\/failed counts, with a one-click editor for each site's overrides."}},"plugin_section":[],"plugin_tags":[26736,98133,193628,6696,48586],"plugin_category":[41],"plugin_contributors":[266000],"plugin_business_model":[],"class_list":["post-306287","plugin","type-plugin","status-publish","hentry","plugin_tags-email-log","plugin_tags-gmail-smtp","plugin_tags-outlook-smtp","plugin_tags-smtp","plugin_tags-transactional-email","plugin_category-communication","plugin_contributors-nimblymail","plugin_committers-nimblymail"],"banners":{"banner":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/banner-772x250.png?rev=3562596","banner_2x":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/banner-1544x500.png?rev=3562596","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/icon.svg?rev=3562596","icon":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/icon.svg?rev=3562596","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/screenshot-1.png?rev=3562596","caption":"Dashboard \u2014 Delivery stats, connection status, queue health, deliverability summary, and recent email activity at a glance."},{"src":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/screenshot-2.png?rev=3562596","caption":"Email Log \u2014 Searchable log table with status filters, bulk actions, and per-email detail view."},{"src":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/screenshot-3.png?rev=3562596","caption":"Settings: Connection \u2014 Choose from nine supported mailers including Gmail OAuth, Outlook \/ Microsoft 365 OAuth, Amazon SES, Resend, SendLayer, Brevo, and ZeptoMail."},{"src":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/screenshot-4.png?rev=3562596","caption":"Settings: Connection (Outlook \/ Microsoft 365) \u2014 Connect your Microsoft account in one click via NimblyMail's secure OAuth proxy \u2014 no Azure app registration required."},{"src":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/screenshot-5.png?rev=3562596","caption":"Setup Wizard \u2014 Guided first-run configuration with auto-detection of existing SMTP plugins."},{"src":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/screenshot-6.png?rev=3562596","caption":"Settings: Mail Queue \u2014 Turn on the background queue to defer wp_mail() calls; configure max attempts, batch size, exponential backoff, default priority, and a pause toggle."},{"src":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/screenshot-7.png?rev=3562596","caption":"Mail Queue admin \u2014 Live view of pending, processing, and failed deliveries with per-row retry \/ cancel actions, last-error preview, and counts grouped by status."},{"src":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/screenshot-8.png?rev=3562596","caption":"Settings: Developer Sandbox \u2014 Stop staging environments from sending real email. Log Only or Redirect mode, with an allowlist for addresses that should still be delivered."},{"src":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/screenshot-9.png?rev=3562596","caption":"Deliverability Health Audit \u2014 Automated SPF \/ DKIM \/ DMARC \/ PTR audit of the active sender domain with mailer-aware requirements."},{"src":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/screenshot-10.png?rev=3562596","caption":"Tools: Email Tester \u2014 Send a test email to verify your configuration works."},{"src":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/screenshot-11.png?rev=3562596","caption":"Settings: Email Controls \u2014 Toggle individual WordPress notification emails on or off (over 25 triggers across 8 categories)."},{"src":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/screenshot-12.png?rev=3562596","caption":"Network Dashboard \u2014 Aggregated delivery stats, top failing sites, and per-site totals across the whole multisite network."},{"src":"https:\/\/ps.w.org\/nimblymail-smtp\/assets\/screenshot-13.png?rev=3562596","caption":"Network Sites \u2014 Per-site summary table showing the active mailer, override count, and recent sent\/failed counts, with a one-click editor for each site's overrides."}],"raw_content":"<!--section=description-->\n<p>NimblyMail is a comprehensive SMTP and email logging plugin designed to fix WordPress email deliverability issues. By default, WordPress uses the unreliable PHP <code>mail()<\/code> function, which often causes emails to land in the spam folder or never deliver. NimblyMail solves this by reconfiguring WordPress to securely route your site's emails through a proper SMTP server or dedicated email provider.<\/p>\n\n<p>Whether you need to connect via a standard SMTP host, Gmail OAuth, Microsoft 365 OAuth, Amazon SES, Resend, SendLayer, Brevo, or ZeptoMail, NimblyMail ensures your emails reach the inbox. Plus, with comprehensive email logging, a background queue, a developer sandbox, and an automated deliverability audit, you get full delivery monitoring and one-click troubleshooting.<\/p>\n\n<h4>At a glance<\/h4>\n\n<ul>\n<li>Nine email providers \u2014 SMTP, Gmail OAuth, Outlook \/ Microsoft 365 OAuth, Amazon SES, Resend, SendLayer, Brevo, ZeptoMail, and PHP mail.<\/li>\n<li><strong>Free Email Logging<\/strong> \u2014 Comprehensive log with search, status filters, and one-click resend of failed emails.<\/li>\n<li><strong>Background Queue<\/strong> \u2014 Defer wp_mail() calls to a non-blocking queue powered by Action Scheduler, with three-tier priority, exponential backoff retries, and admin tools to retry or cancel pending mail.<\/li>\n<li><strong>Developer Sandbox<\/strong> \u2014 Stop staging and local environments from sending real email. Choose Log Only (capture and short-circuit) or Redirect (rewrite every recipient to a single safe address). Optional allowlist for addresses that should bypass the sandbox.<\/li>\n<li><strong>Deliverability Health Audit<\/strong> \u2014 Automated DNS-based audit of SPF, DKIM, DMARC, and PTR for the active sender domain, with scheduled checks and human-readable findings per pillar.<\/li>\n<li><strong>Clean, Modern Dashboard<\/strong> \u2014 Delivery stats, connection health, queue health widget, deliverability summary, and recent activity at a glance.<\/li>\n<li>Selectively disable WordPress notification emails across 8 categories (over 25 individual triggers).<\/li>\n<li>Failure alerts delivered via PHP's native <code>mail()<\/code> so a broken transport can't silence them.<\/li>\n<li>AES-256-CBC credential encryption with optional PHP-constant overrides in wp-config.php.<\/li>\n<li>First-class WordPress Multisite support with network defaults, per-site overrides, and per-field locks.<\/li>\n<li>Guided setup wizard with auto-detection and one-click import from existing SMTP plugins.<\/li>\n<\/ul>\n\n<h4>Supported Email Providers<\/h4>\n\n<ul>\n<li><strong>Other SMTP<\/strong> \u2014 Connect to any SMTP server (Outlook, Office 365, Mailgun, SendGrid, Zoho, etc.)<\/li>\n<li><strong>Gmail \/ Google Workspace<\/strong> \u2014 Authenticate securely via Google OAuth without managing your own Google Cloud credentials.<\/li>\n<li><strong>Outlook \/ Microsoft 365<\/strong> \u2014 Authenticate via Microsoft OAuth and send through <code>smtp.office365.com<\/code> without registering your own Azure application.<\/li>\n<li><strong>Amazon SES<\/strong> \u2014 Send via AWS Simple Email Service<\/li>\n<li><strong>Resend<\/strong> \u2014 Modern email API for developers<\/li>\n<li><strong>SendLayer<\/strong> \u2014 Transactional email delivery service<\/li>\n<li><strong>Brevo<\/strong> \u2014 Transactional email API (formerly Sendinblue)<\/li>\n<li><strong>ZeptoMail<\/strong> \u2014 Zoho's transactional email service with regional endpoints<\/li>\n<li><strong>Default (PHP)<\/strong> \u2014 Fallback to the built-in PHP mail function<\/li>\n<\/ul>\n\n<h4>Email Logging<\/h4>\n\n<p>Every outgoing email is logged with recipient, subject, status, headers, and optional body capture. Search and filter logs by status (sent, failed, pending), resend failed emails with one click, and view full message details in a modal preview.<\/p>\n\n<h4>Background Queue<\/h4>\n\n<p>Turn the queue on under NimblyMail &gt; Settings &gt; Mail Queue and every wp_mail() call returns immediately. Messages are persisted to a database queue, dispatched by Action Scheduler in priority order (high \/ normal \/ bulk), and retried with exponential backoff on transient failures. Attachments are staged on enqueue so request-scoped tmp files cannot break delayed delivery. The Queue admin screen lists pending and failed items with retry \/ cancel actions, and the dashboard surfaces a queue-health widget. Test emails and admin alerts continue to send synchronously by default so you always get immediate feedback.<\/p>\n\n<h4>Developer Sandbox<\/h4>\n\n<p>Working on a staging copy or local clone? Turn on the sandbox to guarantee no real customer ever receives an accidental email. Pick <strong>Log Only<\/strong> to capture and short-circuit every wp_mail() call so they show up in the Email Log without leaving the host, or <strong>Redirect<\/strong> to rewrite every recipient to a single safe address with the originals preserved in <code>X-NimblyMail-Original-*<\/code> headers and a configurable subject prefix. An allowlist (exact email or <code>*@domain.com<\/code>) lets through addresses you do want delivered for testing. Sandboxing is settings-driven, switchable from the Network Admin on multisite, and visible at a glance via an admin-bar badge.<\/p>\n\n<h4>Deliverability Health Audit<\/h4>\n\n<p>NimblyMail runs an automated DNS audit of the active sender domain on a schedule (and on demand) and surfaces the result on the Deliverability page and the dashboard. The audit covers four pillars \u2014 SPF, DKIM, DMARC, and PTR \u2014 and is mailer-aware: required SPF includes and DKIM selectors are sourced from whichever provider you have configured (Gmail, Outlook 365, SES, etc.), with skip explanations for cases where a check does not apply. Findings are human-readable: each pillar shows pass\/warn\/fail with a one-line reason and a link to the relevant provider documentation.<\/p>\n\n<h4>Email Controls<\/h4>\n\n<p>Selectively disable WordPress notification emails you don't need \u2014 comment notifications, password reset emails, new user registrations, automatic update notices, and more. Over 25 individual email types across 8 categories can be toggled on or off.<\/p>\n\n<h4>Failure Alerts<\/h4>\n\n<p>Receive instant alerts when emails fail to deliver. Configure alert recipients with optional CC and BCC addresses. Alerts are sent via PHP's native mail function to bypass the broken transport.<\/p>\n\n<h4>Security<\/h4>\n\n<p>Credentials (SMTP passwords, API keys) are encrypted at rest using AES-256-CBC with HMAC-SHA256 verification. Settings can be locked via PHP constants in wp-config.php, making sensitive fields read-only in the admin UI.<\/p>\n\n<h4>Settings Import<\/h4>\n\n<p>Migrating from another SMTP plugin? NimblyMail automatically detects existing SMTP-plugin configurations and offers one-click import through the setup wizard.<\/p>\n\n<h4>WordPress Multisite<\/h4>\n\n<p>First-class multisite support. Network-activate the plugin once and every sub-site inherits the network defaults until a site admin explicitly overrides a field. Super admins get a Network Admin \u2192 NimblyMail surface with an aggregated dashboard, a sites table, per-field locks, and a per-site override editor.<\/p>\n\n<h4>Clean Dashboard<\/h4>\n\n<p>Built with Vue 3 and Ant Design, the dashboard is fast, responsive, and designed to feel native to WordPress. A guided setup wizard helps you configure everything in minutes, while the main dashboard provides a clear overview of your email delivery health.<\/p>\n\n<h3>Development and source code<\/h3>\n\n<p>The complete, human-readable source code for NimblyMail is maintained in the public WordPress.org SVN repository for this plugin. Browse it directly in your web browser via the Trac UI:<\/p>\n\n<ul>\n<li><strong>Browse source:<\/strong> https:\/\/plugins.trac.wordpress.org\/browser\/nimblymail-smtp\/trunk\/<\/li>\n<li><strong>SVN checkout:<\/strong> <code>svn checkout https:\/\/plugins.svn.wordpress.org\/nimblymail-smtp\/trunk\/ nimblymail-smtp<\/code><\/li>\n<\/ul>\n\n<p>The repository <code>trunk\/<\/code> directory contains:<\/p>\n\n<ul>\n<li><code>src\/<\/code> \u2014 the PHP backend (PSR-4 autoloaded, plain readable PHP).<\/li>\n<li><code>apps\/<\/code> \u2014 the Vue 3 + TypeScript single-page apps (Dashboard, Settings, Email Logs, Tools, Setup Wizard, Network Admin) that get compiled into the minified bundles under <code>dist\/<\/code>.<\/li>\n<li><code>package.json<\/code>, <code>package-lock.json<\/code>, <code>tsconfig.json<\/code>, <code>tsconfig.node.json<\/code>, <code>vite.config.ts<\/code> \u2014 the build configuration needed to reproduce the exact <code>dist\/<\/code> bundles.<\/li>\n<li>The current <code>dist\/<\/code> build output plus per-bundle source-map files (<code>*.js.map<\/code>, <code>*.css.map<\/code>).<\/li>\n<\/ul>\n\n<p>The minified JavaScript and CSS files under <code>dist\/<\/code> are produced from the Vue\/TypeScript sources under <code>apps\/<\/code> using Vite. To rebuild them yourself from a <code>trunk\/<\/code> checkout:<\/p>\n\n<ol>\n<li>From the plugin directory, run <code>composer install<\/code> to install PHP dependencies (PSR-4 autoloader + Action Scheduler).<\/li>\n<li>Run <code>npm install<\/code> to install the JavaScript build dependencies declared in <code>package.json<\/code>.<\/li>\n<li>Run <code>npm run build<\/code> to regenerate the <code>dist\/<\/code> bundle from the <code>apps\/<\/code> sources. For local development with hot-module replacement, run <code>npm run dev<\/code> (Vite dev server) after adding <code>define( 'HMR_DEV', 'nimblymail-smtp' );<\/code> to your <code>wp-config.php<\/code>.<\/li>\n<\/ol>\n\n<h4>How files under `dist\/` map to readable source<\/h4>\n\n<p>Inside the SVN <code>trunk\/<\/code>, every minified JavaScript and CSS file under <code>dist\/<\/code> is accompanied by a <code>.map<\/code> source-map file (e.g. <code>dist\/dashboard.&lt;hash&gt;.js<\/code> ships with <code>dist\/dashboard.&lt;hash&gt;.js.map<\/code>). The source map fully describes how each minified file was produced from the readable Vue \/ TypeScript files under <code>apps\/<\/code>, and any modern browser DevTools panel or build tool can use it to inspect the original source line-by-line. The high-level mapping is:<\/p>\n\n<ul>\n<li><code>dist\/&lt;entry&gt;.&lt;hash&gt;.js<\/code> \u2014 the entry-point bundle for one of the admin apps. Direct source: <code>apps\/&lt;entry&gt;\/index.ts<\/code> (e.g. <code>dist\/dashboard.&lt;hash&gt;.js<\/code> comes from <code>apps\/dashboard\/index.ts<\/code>). Entry names are: <code>dashboard<\/code>, <code>settings<\/code>, <code>email-logs<\/code>, <code>queue<\/code>, <code>tools<\/code>, <code>wizard<\/code>, <code>deliverability<\/code>, <code>network-sites<\/code>, <code>network-dashboard<\/code>.<\/li>\n<li><code>dist\/chunks\/&lt;name&gt;.&lt;hash&gt;.js<\/code> \u2014 shared chunks auto-emitted by Vite\/Rollup whenever a module is imported by two or more entry points. They contain no plugin-specific code that is not also visible in the readable sources under <code>apps\/<\/code> (and in <code>node_modules\/<\/code> for upstream dependencies like Vue, Ant Design Vue, Vue Router, and Pinia). The <code>dist\/chunks\/AppHeader.&lt;hash&gt;.js<\/code> chunk in particular bundles the shared admin shell (<code>apps\/shared\/AppHeader.vue<\/code>, <code>apps\/shared\/theme.ts<\/code>, <code>apps\/shared\/i18n.ts<\/code>, the Axios HTTP client in <code>apps\/shared\/api.ts<\/code>) together with the Vue runtime and Ant Design Vue components, because every admin page imports them.<\/li>\n<li><code>dist\/assets\/&lt;name&gt;.&lt;hash&gt;.css<\/code> \u2014 compiled CSS extracted from the corresponding Vue Single-File Components under <code>apps\/<\/code>. Source-maps are emitted for these too (<code>*.css.map<\/code>).<\/li>\n<\/ul>\n\n<p>The full version history of the plugin is also browsable on its WordPress.org page at https:\/\/wordpress.org\/plugins\/nimblymail-smtp\/.<\/p>\n\n<h3>External services<\/h3>\n\n<p>NimblyMail does not contact any third-party service on its own. Outbound network requests only happen when <strong>you actively configure and select a mailer<\/strong> that uses an external provider, and only at the time of sending an email (or, for OAuth providers, when authorizing the connection).<\/p>\n\n<p>The plugin connects to the following services depending on which mailer you choose. None of these are contacted unless you select that mailer and enter credentials.<\/p>\n\n<ul>\n<li><p><strong>NimblyMail OAuth Proxy<\/strong> (<code>https:\/\/oauth.nimblymail.com<\/code>) \u2014 Used <strong>only when you choose Gmail or Outlook \/ Microsoft 365 as your mailer<\/strong>. The proxy is operated by the plugin author (NimblyMail Team) and exists so you don't have to register your own Google Cloud project or Azure application. Endpoints contacted: <code>https:\/\/oauth.nimblymail.com\/authorize\/{google|microsoft}<\/code>, <code>https:\/\/oauth.nimblymail.com\/token\/{google|microsoft}<\/code>, <code>https:\/\/oauth.nimblymail.com\/refresh\/{google|microsoft}<\/code>, <code>https:\/\/oauth.nimblymail.com\/revoke\/{google|microsoft}<\/code>. <strong>Data sent<\/strong>: your site URL (<code>get_home_url()<\/code>), an OAuth state value and PKCE challenge generated by the plugin, the authorization code returned by Google\/Microsoft after consent, the refresh token (signed with a per-install HMAC secret) on every token refresh. <strong>No email content, recipient lists, or message metadata is ever sent to the proxy<\/strong> \u2014 actual mail delivery goes directly from your site to Gmail's \/ Microsoft's SMTP servers. NimblyMail Terms of Service: https:\/\/nimblymail.com\/terms-of-service\/ \u2014 NimblyMail Privacy Policy: https:\/\/nimblymail.com\/privacy-policy\/<\/p><\/li>\n<li><p><strong>Other SMTP<\/strong> \u2014 When configured, every email is sent over SMTP to the server you specify (host, port, encryption, credentials). The data sent is the email itself: From \/ To \/ CC \/ BCC \/ Subject \/ Body \/ attachments. The remote SMTP server is operated by you or your provider; NimblyMail does not select it.<\/p><\/li>\n<li><p><strong>Gmail \/ Google Workspace<\/strong> \u2014 Uses Google's OAuth 2.0 service (via the NimblyMail OAuth Proxy described above) to authorize sending, and <code>smtp.gmail.com:587<\/code> (XOAUTH2) to deliver mail. Direct endpoints contacted: <code>https:\/\/accounts.google.com\/o\/oauth2\/v2\/auth<\/code> (consent screen), <code>https:\/\/www.googleapis.com\/oauth2\/v2\/userinfo<\/code> (read the authorized email address for the SASL <code>user=<\/code> field), <code>smtp.gmail.com<\/code> (SMTP delivery). Data sent directly to Google: the email envelope and message content at send time. Google Terms of Service: https:\/\/policies.google.com\/terms \u2014 Google Privacy Policy: https:\/\/policies.google.com\/privacy<\/p><\/li>\n<li><p><strong>Outlook \/ Microsoft 365<\/strong> \u2014 Uses Microsoft's OAuth 2.0 service (via the NimblyMail OAuth Proxy described above) to authorize sending, and <code>smtp.office365.com:587<\/code> (XOAUTH2) to deliver mail. Direct endpoints contacted: <code>https:\/\/login.microsoftonline.com\/common\/oauth2\/v2.0\/authorize<\/code> (consent screen), <code>https:\/\/graph.microsoft.com\/v1.0\/me<\/code> (read the authorized email address), <code>smtp.office365.com<\/code> (SMTP delivery). Data sent directly to Microsoft: the email envelope and message content at send time. Microsoft Services Agreement: https:\/\/www.microsoft.com\/en\/servicesagreement\/ \u2014 Microsoft Privacy Statement: https:\/\/privacy.microsoft.com\/privacystatement<\/p><\/li>\n<li><p><strong>Amazon SES<\/strong> \u2014 When configured, emails are sent over SMTP to the AWS SES endpoint you select (e.g. <code>email-smtp.us-east-1.amazonaws.com<\/code>). Data sent: email envelope and content, plus AWS access key ID and secret. AWS Service Terms: https:\/\/aws.amazon.com\/service-terms\/ \u2014 AWS Privacy Notice: https:\/\/aws.amazon.com\/privacy\/<\/p><\/li>\n<li><p><strong>Resend<\/strong> \u2014 When configured, emails are sent via HTTPS POST to <code>https:\/\/api.resend.com\/emails<\/code>. Data sent: API key, email envelope and content. Resend Terms of Service: https:\/\/resend.com\/legal\/terms-of-service \u2014 Resend Privacy Policy: https:\/\/resend.com\/legal\/privacy-policy<\/p><\/li>\n<li><p><strong>SendLayer<\/strong> \u2014 When configured, emails are sent via HTTPS POST to <code>https:\/\/console.sendlayer.com\/api\/v1\/email<\/code>. Data sent: API key, email envelope and content. SendLayer Terms: https:\/\/sendlayer.com\/terms-of-service\/ \u2014 SendLayer Privacy Policy: https:\/\/sendlayer.com\/privacy-policy\/<\/p><\/li>\n<li><p><strong>Brevo<\/strong> \u2014 When configured, emails are sent via HTTPS POST to <code>https:\/\/api.brevo.com\/v3\/smtp\/email<\/code>. Data sent: API key, email envelope and content. Brevo Terms of Service: https:\/\/www.brevo.com\/legal\/termsofuse\/ \u2014 Brevo Privacy Policy: https:\/\/www.brevo.com\/legal\/privacypolicy\/<\/p><\/li>\n<li><p><strong>ZeptoMail<\/strong> \u2014 When configured, emails are sent via HTTPS POST to the regional endpoint you select (e.g. <code>https:\/\/api.zeptomail.com\/v1.1\/email<\/code>, with <code>eu<\/code>, <code>in<\/code>, <code>com.cn<\/code>, or <code>com.au<\/code> available). Data sent: Send Mail Token, email envelope and content. Zoho Terms of Service: https:\/\/www.zoho.com\/zeptomail\/terms.html \u2014 Zoho Privacy Policy: https:\/\/www.zoho.com\/privacy.html<\/p><\/li>\n<li><p><strong>Default (PHP)<\/strong> \u2014 No external service. Emails are handed to the PHP <code>mail()<\/code> function and routed by your server.<\/p><\/li>\n<\/ul>\n\n<p>In addition, NimblyMail logs each outgoing email <strong>locally<\/strong> to a database table on your own WordPress site. No log data is ever transmitted off-site.<\/p>\n\n<p>The Deliverability Health Audit performs DNS-only lookups for the configured sender domain. When the host's PHP <code>dns_get_record()<\/code> is unavailable or restricted, NimblyMail falls back to public DNS-over-HTTPS resolvers (<code>https:\/\/cloudflare-dns.com\/dns-query<\/code> and <code>https:\/\/dns.google\/resolve<\/code>) to retrieve SPF, DKIM, DMARC, and PTR records. Only the sender domain (and DKIM selector when applicable) is sent in the query \u2014 no mail content. Cloudflare DoH Privacy: https:\/\/developers.cloudflare.com\/1.1.1.1\/privacy\/public-dns-resolver\/ \u2014 Google Public DNS Privacy: https:\/\/developers.google.com\/speed\/public-dns\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>nimblymail-smtp<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Follow the setup wizard to configure your email provider, or go to NimblyMail &gt; Settings to configure manually.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20configure%20smtp%3F\"><h3>How do I configure SMTP?<\/h3><\/dt>\n<dd><p>Go to NimblyMail &gt; Settings &gt; Connection, select \"Other SMTP\" as your mailer, then enter your SMTP host, port, encryption type, and credentials. Click \"Save Changes\" and use the Email Tester under NimblyMail &gt; Tools to verify delivery.<\/p><\/dd>\n<dt id=\"can%20i%20use%20gmail%20to%20send%20emails%3F\"><h3>Can I use Gmail to send emails?<\/h3><\/dt>\n<dd><p>Yes. Select \"Gmail \/ Google Workspace\" as your mailer and click \"Connect to Google\" to authorize. NimblyMail uses a centralized OAuth proxy so you don't need to register your own Google Cloud project \u2014 just click, approve, and you're connected. NimblyMail handles token refresh automatically.<\/p><\/dd>\n<dt id=\"can%20i%20use%20outlook%20or%20microsoft%20365%20to%20send%20emails%3F\"><h3>Can I use Outlook or Microsoft 365 to send emails?<\/h3><\/dt>\n<dd><p>Yes. Select \"Outlook \/ Microsoft 365\" as your mailer and click \"Connect to Microsoft\" to authorize. As with Gmail, NimblyMail uses a centralized OAuth proxy so you don't need to register your own Azure app \u2014 sign in with the mailbox you want to send from and you're connected. Mail is delivered through <code>smtp.office365.com:587<\/code> using XOAUTH2.<\/p><\/dd>\n<dt id=\"how%20does%20the%20developer%20sandbox%20work%3F\"><h3>How does the Developer Sandbox work?<\/h3><\/dt>\n<dd><p>Turn it on under NimblyMail &gt; Settings &gt; Sandbox. Choose Log Only to capture every email locally without sending, or Redirect to rewrite every recipient to a single safe address. You can also configure an allowlist (exact email or <code>*@domain.com<\/code>) for addresses that should still be delivered for testing. The sandbox status is visible on the WordPress admin bar so you never forget it's on.<\/p><\/dd>\n<dt id=\"how%20do%20i%20secure%20my%20credentials%3F\"><h3>How do I secure my credentials?<\/h3><\/dt>\n<dd><p>NimblyMail encrypts all stored credentials (passwords, API keys) using AES-256-CBC. For additional security, you can define credentials as PHP constants in wp-config.php instead of storing them in the database. For example: <code>define( 'NIMBLYMAIL_SMTP_PASS', 'your-password' );<\/code><\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20email%20logs%20when%20i%20uninstall%3F\"><h3>What happens to my email logs when I uninstall?<\/h3><\/dt>\n<dd><p>By default, all data is preserved when you deactivate. To remove all data on uninstall, enable \"Remove Data on Uninstall\" under NimblyMail &gt; Settings &gt; Misc before deactivating.<\/p><\/dd>\n<dt id=\"can%20i%20import%20settings%20from%20another%20smtp%20plugin%3F\"><h3>Can I import settings from another SMTP plugin?<\/h3><\/dt>\n<dd><p>Yes. NimblyMail can import settings from several existing SMTP plugins. The setup wizard detects supported plugins automatically, or you can import manually from NimblyMail &gt; Tools &gt; Import.<\/p><\/dd>\n<dt id=\"how%20do%20i%20set%20up%20failure%20alerts%3F\"><h3>How do I set up failure alerts?<\/h3><\/dt>\n<dd><p>Go to NimblyMail &gt; Settings &gt; Alerts, enable \"Enable Alerts\", and enter one or more recipient email addresses. You can also add CC and BCC recipients. Alerts are sent whenever an email fails to deliver.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Maintenance release with compatibility tested up to WordPress 7.0.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Nine email providers: PHP mail, SMTP, Gmail OAuth, Outlook \/ Microsoft 365 OAuth, Amazon SES, Resend, SendLayer, Brevo, ZeptoMail.<\/li>\n<li>Comprehensive email logging with search, filters, and resend.<\/li>\n<li>Background queue with three-tier priority, exponential backoff retries, attachment staging, and admin retry\/cancel tools.<\/li>\n<li>Developer Sandbox with Log Only and Redirect modes plus an allowlist for bypass addresses.<\/li>\n<li>Automated deliverability health audit covering SPF \/ DKIM \/ DMARC \/ PTR with mailer-aware requirements.<\/li>\n<li>Email controls to toggle 25+ WordPress notification emails.<\/li>\n<li>Failure alerts with CC\/BCC support.<\/li>\n<li>AES-256-CBC credential encryption with HMAC-SHA256 verification.<\/li>\n<li>Per-install signed-refresh OAuth proxy protocol \u2014 leaked refresh tokens cannot be replayed against the proxy from arbitrary hosts.<\/li>\n<li>PHP constants support for wp-config.php overrides.<\/li>\n<li>Settings import from supported existing SMTP plugins.<\/li>\n<li>Guided setup wizard with auto-detection.<\/li>\n<li>Modern Vue 3 admin interface.<\/li>\n<\/ul>","raw_excerpt":"A modern SMTP and email log plugin for WordPress. Improve deliverability via SMTP, Gmail, Resend, Amazon SES, or SendLayer.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/306287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=306287"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nimblymail"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=306287"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=306287"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=306287"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=306287"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=306287"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=306287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}