Title: Vora SMTP
Author: rajapriayahere
Published: <strong>August 25, 2026</strong>
Last modified: August 25, 2026

---

Search plugins

![](https://ps.w.org/vora-smtp/assets/banner-772x250.png?rev=3664822)

![](https://ps.w.org/vora-smtp/assets/icon-256x256.png?rev=3664822)

# Vora SMTP

 By [rajapriayahere](https://profiles.wordpress.org/rajapriayahere/)

[Download](https://downloads.wordpress.org/plugin/vora-smtp.1.7.0.zip)

 * [Details](https://wordpress.org/plugins/vora-smtp/#description)
 * [Reviews](https://wordpress.org/plugins/vora-smtp/#reviews)
 *  [Installation](https://wordpress.org/plugins/vora-smtp/#installation)
 * [Development](https://wordpress.org/plugins/vora-smtp/#developers)

 [Support](https://wordpress.org/support/plugin/vora-smtp/)

## Description

WordPress sends mail with PHP’s `mail()` function by default. Most hosts send it
from an address the receiving server cannot verify, so password resets, order receipts
and contact form notifications quietly land in spam or vanish.

Vora SMTP replaces that with a real authenticated connection. You point it at a 
mail service you already control, and every message WordPress sends goes out over
that connection instead.

#### Sending methods

 * **Generic SMTP** — any provider that gives you a host, port, username and password,
   with TLS, SSL or unencrypted connections.
 * **Gmail and Google Workspace** — connect over OAuth 2.0 by registering your own
   Google app. No password is stored, and no app password is needed.
 * **PHP Mail** — the server’s own `mail()` function, with nothing to configure.
   Deliverability is the weakest of the three, which is why it exists mainly as 
   a safety net rather than a first choice.

#### Automatic fallback

A mail provider can stop accepting messages for reasons that have nothing to do 
with your site: an expired credential, a rate limit, an outage, a DNS failure. When
that happens the message is normally lost, and nobody finds out until a customer
says they never got their receipt.

 * If a send fails, the plugin immediately retries it through a second sending method
   of your choice.
 * PHP Mail is the default fallback, because it needs no credentials and no connection
   to a third party, so it is still available when the configured provider is not.
 * Fallback covers every sending method, including Generic SMTP.
 * The log records which method actually delivered each message, so a send rescued
   by the fallback is never credited to the provider that failed.
 * Turn it off, or point it at a different method, on the Providers screen.

#### Failure alerts

Optionally email a chosen address whenever a message cannot be delivered, including
the recipient, the sending method used and the error the mail server returned. Alerts
cannot loop: a failing alert never triggers another alert.

#### Email log, with preview and resend

Every message the plugin handles is recorded, so you can prove what was sent, see
exactly what it looked like, and send it again without asking the customer to trigger
it a second time.

 * **Preview** — open any logged message and read it as the recipient saw it. HTML
   email is rendered in a sandboxed frame, so a message can be inspected safely 
   without its markup, styles or scripts touching your admin screen. Storing message
   bodies is optional and off by default, so you choose whether the log keeps content
   or only metadata.
 * **Resend** — send any logged message again with one click, to the original recipient,
   using your current sending method. Useful when a receipt failed while a provider
   was down, or when a password reset never arrived.
 * Searchable history filtered by status, provider, recipient or subject.
 * The real error text returned by the mail server when a message fails, not a generic
   failure notice.
 * A record of which sending method actually delivered each message, including when
   a fallback rescued it.
 * Automatic pruning of entries older than a configurable number of days, so the
   log cannot grow without limit.

#### Sender identity

Set the From name and address once and optionally force every message on the site
to use them, which stops other plugins overriding your sender details. The plugin
also repairs invalid defaults such as `wordpress@localhost` that cause outright 
send failures on local and staging installs.

#### Diagnostics

A dashboard summarises messages sent, failures and success rate. You can send a 
test message to any address and see exactly what the mail server said if it does
not arrive.

#### Privacy

Credentials and OAuth tokens are stored in your own database and are never transmitted
anywhere except to the mail provider you configure. The plugin collects no analytics
and phones no home. See the External services section below for the full list of
endpoints it contacts.

#### Source code and build process

The plugin’s admin screen is a React application. The file it loads at runtime, `
build/index.jsx.js`, is generated and minified, so the **complete, unminified, human-
readable source it is built from ships inside this plugin** — no external download
is needed to read, study, modify or fork it.

 * Source: `admin/src/` (`index.jsx`, `App.jsx`, `api.js` and `components/`), documented
   in `admin/src/README.md`
 * Build configuration: `package.json`
 * Generated output: `build/index.jsx.js` and `build/index.jsx.asset.php`

Nothing else in the plugin is compiled, minified or obfuscated. All PHP and all 
CSS (`assets/admin.css`) is the original source, formatted as written.

**To rebuild the generated file from the included source:**

 1. Install [Node.js](https://nodejs.org/) 18 or newer, which includes npm.
 2. From the plugin directory, install the build tooling: `npm install`
 3. Produce the production build: `npm run build`

That regenerates `build/index.jsx.js` and `build/index.jsx.asset.php` from `admin/
src/`. Use `npm run start` instead for an unminified watch build while developing,
and `npm run lint` to run ESLint over the sources.

The build uses [@wordpress/scripts](https://www.npmjs.com/package/@wordpress/scripts),
WordPress’s own official, free and open source build toolchain (a wrapper around
webpack and Babel). It is declared in `package.json`, is fetched by `npm install`,
and there is no custom webpack configuration — the entry point and output path are
the two arguments in the `build` script.

### External services

This plugin connects to the following third party services. It contacts **only**
the services required by the sending method you configure, and makes no outbound
request to any third party at all when you use Generic SMTP or PHP Mail.

#### Google OAuth 2.0

Used when you connect a Gmail or Google Workspace account, to exchange an authorisation
code for an access token and to refresh that token when it expires.

 * Endpoint: `https://oauth2.googleapis.com/token`
 * Data sent: your Google app’s client ID and client secret, the authorisation code
   returned by Google’s consent screen, and your refresh token.
 * When: only when you click Connect, and afterwards whenever a stored access token
   has expired.
 * Terms of service: https://policies.google.com/terms
 * Privacy policy: https://policies.google.com/privacy

#### Gmail API

Used to transmit outgoing email when Gmail is the active sending method.

 * Endpoint: `https://gmail.googleapis.com/gmail/v1/users/me/messages/send`
 * Data sent: the message itself, including recipients, subject, body, headers and
   attachments.
 * When: each time WordPress sends an email while Gmail is selected.
 * Terms of service: https://policies.google.com/terms
 * Privacy policy: https://policies.google.com/privacy

#### Microsoft identity platform

This plugin on its own offers no Microsoft 365 sending method, so out of the box
it never contacts these endpoints. The OAuth code that does so ships here and is
used when the Vora SMTP Pro add-on supplies the Microsoft 365 provider. It is declared
for completeness, because the requests are made by this plugin’s code.

Used when you connect a Microsoft 365 account, to exchange an authorisation code
for an access token and to refresh it.

 * Endpoints: `https://login.microsoftonline.com/`, `https://graph.microsoft.com/`
 * Data sent: your Microsoft app’s client ID, client secret and tenant ID, the authorisation
   code returned by Microsoft’s consent screen, and your refresh token.
 * When: only when you click Connect, and afterwards whenever a stored access token
   has expired.
 * Terms of service: https://www.microsoft.com/servicesagreement
 * Privacy policy: https://privacy.microsoft.com/privacystatement

## Screenshots

[⌊Dashboard with delivery statistics and the test email tool.⌉⌊Dashboard with delivery
statistics and the test email tool.⌉[

Dashboard with delivery statistics and the test email tool.

[⌊Choosing and configuring a sending method on the Providers screen.⌉⌊Choosing and
configuring a sending method on the Providers screen.⌉[

Choosing and configuring a sending method on the Providers screen.

[⌊Sender identity and logging options on the Settings screen.⌉⌊Sender identity and
logging options on the Settings screen.⌉[

Sender identity and logging options on the Settings screen.

[⌊The email log, with filtering and per-message detail.⌉⌊The email log, with filtering
and per-message detail.⌉[

The email log, with filtering and per-message detail.

## Installation

 1. Upload the plugin to `/wp-content/plugins/` and activate it through the Plugins
    screen.
 2. Go to **Vora SMTP  Providers** and choose your sending method.
 3. Enter the credentials for your SMTP server, or connect a Gmail account over OAuth.
 4. Set your From name and address under **Vora SMTP  Settings**.
 5. Send a test message from **Vora SMTP  Dashboard** to confirm delivery works.

## FAQ

### Where is the source code for the minified JavaScript?

Inside the plugin, in `admin/src/`. The admin screen is a React application, and`
build/index.jsx.js` is generated from those files by [@wordpress/scripts](https://www.npmjs.com/package/@wordpress/scripts).
Run `npm install` and then `npm run build` from the plugin directory to regenerate
it. See “Source code and build process” in the Description for the full detail. 
Nothing else in the plugin is compiled or minified.

### Do I still need an email account somewhere?

Yes. This plugin connects WordPress to a mail service you already have. It is not
itself a mail service and does not send anything on your behalf.

### Where are my credentials stored?

In your own site’s database, in a single WordPress option. They are transmitted 
only to the provider you configure.

### Do I need to create a Google app to use Gmail?

Yes, for the standard setup. You register an OAuth application in Google Cloud Console
and paste the client ID and secret into the plugin. This keeps the connection entirely
between your site and Google.

### Why does my email still go to spam?

Authenticated sending fixes the connection, but receiving servers also check your
domain’s DNS. Add SPF and DKIM records for whichever service you send through. Your
provider documents the exact values.

### My messages fail. How do I find out why?

Send a test message from the Dashboard. The plugin shows the actual error returned
by the mail server rather than a generic failure, and the same detail is recorded
against each failed entry in the email log.

### Does the plugin log the contents of my email?

Only if you enable it. By default the log records metadata such as recipient, subject,
provider and status. Storing the full message body is a separate setting, off by
default, because it noticeably increases database size.

### What happens if I deactivate the plugin?

WordPress reverts to its default `mail()` behaviour. Your settings and logs are 
preserved. They are removed only if you delete the plugin, which drops its tables
and options.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Vora SMTP” is open source software. The following people have contributed to this
plugin.

Contributors

 *   [ rajapriayahere ](https://profiles.wordpress.org/rajapriayahere/)
 *   [ rajapriya ](https://profiles.wordpress.org/rajapriya/)

[Translate “Vora SMTP” into your language.](https://translate.wordpress.org/projects/wp-plugins/vora-smtp)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/vora-smtp/), check 
out the [SVN repository](https://plugins.svn.wordpress.org/vora-smtp/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/vora-smtp/) by [RSS](https://plugins.trac.wordpress.org/log/vora-smtp/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.7.0

 * Added a Disconnect button to the Gmail screen. It revokes the authorisation with
   Google and deletes every stored token from your site, so you can withdraw access
   without leaving WordPress.
 * Fixed: Test Connection reported “Google Client ID is not configured” for a Gmail
   account connected without a local app registration, even though sending worked
   correctly.
 * The unminified source of the admin screen’s JavaScript, and instructions for 
   rebuilding it, are documented in the readme and shipped in `admin/src/`.
 * Microsoft 365 sending, and one-click setup for both Gmail and Microsoft 365, 
   have moved to the Vora SMTP Pro add-on, which supplies the hosted relay holding
   the shared OAuth app. Gmail is unchanged in this plugin and still connects with
   your own Google Cloud app.
 * The plugin no longer contacts an OAuth relay under any configuration, so that
   entry has been removed from External services.
 * Added `vora_smtp_oneclick_available`, `vora_smtp_oneclick_start_url` and `vora_smtp_oauth_refresh`
   so an add-on can supply a connection method the plugin has no credentials for.

#### 1.6.0

 * WPVora is now credited as a contributor alongside the individual maintainers.
   No functional change.

#### 1.5.0

 * The admin interface is now fully translatable. Every string in the React admin—
   tabs, provider forms, the email log, the test-email tool and its confirmations—
   was previously hardcoded English and could not be translated at all.
 * Provider connection results and sending errors are translatable, including the
   messages returned by each sending method’s connection test.
 * The test email itself is translatable, subject and body.
 * Added `languages/vora-smtp.pot` with 191 strings for translators, with `translators:`
   comments on every string that interpolates a value.
 * Email log delivery states now display translated (“Sent”, “Failed”, “Queued”)
   while still filtering on the stored English key.
 * Plugin URI updated to the new product page.

#### 1.2.0

 * Renamed to Vora SMTP. The plugin’s display name, menu entry and text domain have
   changed; its behaviour and settings have not.
 * Internal identifiers now use the `vora_smtp` prefix throughout, including the
   settings option, the two database tables, the REST namespace and the OAuth relay
   constant and filter. Sites upgrading from an earlier build have their settings,
   email log and queue carried over automatically on activation.
 * Sites that define the OAuth relay constant must rename it from `EASYSMCO_OAUTH_RELAY_URL`
   to `VORA_SMTP_OAUTH_RELAY_URL`, and the matching filter from `easysmco_oauth_relay_url`
   to `vora_smtp_oauth_relay_url`.

#### 1.1.0

 * New “PHP Mail” sending method, using the server’s own mail() function. It needs
   no credentials, so it works as a last resort when a configured provider is unavailable.
 * PHP Mail is now the fallback provider on new installs, and fallback is enabled
   by default. Existing sites keep their saved settings.
 * Fallback now also covers SMTP-based providers. Previously a failed Generic SMTP
   send was never retried.
 * Attachments are no longer dropped when a message is delivered through the Generic
   SMTP driver.
 * A network failure while connecting a Google or Microsoft account now returns 
   to the Providers screen with an explanation instead of a blank error page, and
   retries once when the request never left the server.

#### 1.0.0

 * Initial release.

## Meta

 *  Version **1.7.0**
 *  Last updated **3 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [email](https://wordpress.org/plugins/tags/email/)[email log](https://wordpress.org/plugins/tags/email-log/)
   [gmail](https://wordpress.org/plugins/tags/gmail/)[mailer](https://wordpress.org/plugins/tags/mailer/)
   [smtp](https://wordpress.org/plugins/tags/smtp/)
 *  [Advanced View](https://wordpress.org/plugins/vora-smtp/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/vora-smtp/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/vora-smtp/reviews/)

## Contributors

 *   [ rajapriayahere ](https://profiles.wordpress.org/rajapriayahere/)
 *   [ rajapriya ](https://profiles.wordpress.org/rajapriya/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/vora-smtp/)