Title: ZDN Whitelist Outgoing Email
Author: cuongquach
Published: <strong>July 14, 2026</strong>
Last modified: July 14, 2026

---

Search plugins

![](https://ps.w.org/zdn-whitelist-outgoing-email/assets/banner-772x250.png?rev=
3607769)

![](https://ps.w.org/zdn-whitelist-outgoing-email/assets/icon-256x256.png?rev=3607769)

# ZDN Whitelist Outgoing Email

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

[Download](https://downloads.wordpress.org/plugin/zdn-whitelist-outgoing-email.1.1.2.zip)

 * [Details](https://wordpress.org/plugins/zdn-whitelist-outgoing-email/#description)
 * [Reviews](https://wordpress.org/plugins/zdn-whitelist-outgoing-email/#reviews)
 *  [Installation](https://wordpress.org/plugins/zdn-whitelist-outgoing-email/#installation)
 * [Development](https://wordpress.org/plugins/zdn-whitelist-outgoing-email/#developers)

 [Support](https://wordpress.org/support/plugin/zdn-whitelist-outgoing-email/)

## Description

**ZDN Whitelist Outgoing Email** prevents WordPress from accidentally sending emails
to real users in development or staging environments, and keeps a searchable log
of everything that left the site.

Filtering is **off by default** after activation so a live site is not affected 
until you enable it. When filtering is on and the allowlist is empty, every recipient
is redirected to the fallback address.

#### Features

 * **Whitelist-based filtering** — only allowed email addresses receive emails.
 * **Wildcard domain support** — allow entire domains with `*@example.com`.
 * **Fallback replacement** — non-whitelisted recipients are replaced with your 
   fallback address.
 * **Traceability** — the original email is preserved in the display name (e.g.,`
   user@external.com <fallback@site.com>`).
 * **Outgoing email logger** — capture To, subject, body, headers, attachments, 
   and errors in a custom table.
 * **Filtered badge** — logs show when the whitelist rewrote recipients and what
   the original address was.
 * **View / resend / delete** — inspect HTML or raw bodies, resend a message, or
   clean up bulk rows.
 * **Retention rules** — auto-prune by max row count and/or age.
 * **Highest priority filter** — hooks at `PHP_INT_MIN` so filtering runs before
   any other mail plugin; logging runs last at `PHP_INT_MAX`.
 * **CC/BCC filtering** — also filters CC and BCC headers.
 * **PHP error log option** — optionally log replacements to the PHP error log.

#### Use Cases

 * Development environments where you don’t want emails going to real customers.
 * Staging sites that mirror production data.
 * QA testing where only testers should receive emails.
 * Debugging which plugin sent which email (and whether it was filtered).

### Privacy

When **email logging** is enabled, the plugin stores outgoing message metadata and
bodies locally (recipients, subject, body, headers, attachment paths, status, errors,
and server address). Access is limited to administrators (`manage_options`).

Retention options control automatic deletion by count and/or age. Individual or 
bulk logs can be deleted from the Email Logs screen. Uninstalling the plugin removes
the log table, plugin options, and related scheduled events.

Suggested privacy-policy text is also registered with WordPress under **Settings
Privacy** for site owners to adapt.

The optional PHP error-log setting writes replacement events to the server error
log only (no external service).

## Installation

 1. Upload the `zdn-whitelist-outgoing-email` folder to `/wp-content/plugins/`, or 
    install the release zip via **Plugins  Add New  Upload Plugin**.
 2. Activate the plugin through the Plugins menu. Filtering starts **disabled**.
 3. Go to **Outgoing Email  Whitelist**.
 4. Set your fallback email address.
 5. Optionally add allowed email addresses (one per line). Leave empty to send all 
    outgoing emails to the fallback when filtering is enabled.
 6. Enable filtering when you are ready.
 7. Browse captured mail under **Outgoing Email  Email Logs**.

## FAQ

### Will this break mail on a production site after I activate it?

No. Filtering is off by default. Mail is only rewritten after you enable filtering
in settings.

### What happens if filtering is on but the allowlist is empty?

Every To, Cc, and Bcc recipient is replaced with the fallback address. That is intentional
for staging clones of production data.

### Does resending a log send a real email?

Yes. Resend calls `wp_mail` again. If filtering is still enabled, recipients are
filtered again. Only users who can manage options can resend.

### Where are email logs stored?

In a custom database table (`{prefix}zdnwhoue_email_logs`) on your site. Nothing
is sent to third-party servers by this plugin.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“ZDN Whitelist Outgoing Email” is open source software. The following people have
contributed to this plugin.

Contributors

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

[Translate “ZDN Whitelist Outgoing Email” into your language.](https://translate.wordpress.org/projects/wp-plugins/zdn-whitelist-outgoing-email)

### Interested in development?

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

## Changelog

#### 1.1.2

 * Fix email log detail modal contrast: design tokens now apply on the modal (not
   only the page wrap) so meta fields and Raw/HTML message views stay readable.

#### 1.1.1

 * Prefix all public PHP identifiers (classes, functions, options, hooks, script
   handles) with `zdnwhoue` / `ZDNWHOUE` for WordPress.org uniqueness guidelines.
 * Keep WordPress.org banner/icon assets out of the distributable plugin zip (SVN
   assets only).

#### 1.1.0

 * Initial release: whitelist-based outgoing email filtering with wildcard domain
   support (`*@example.com`).
 * Replace non-whitelisted To/Cc/Bcc recipients with a fallback address while preserving
   the original in the display name.
 * Hooks at `PHP_INT_MIN` so filtering runs before other mail plugins.
 * Filtering defaults off after activation for safer installs; empty allowlist redirects
   all recipients when filtering is on.
 * Optional PHP error-log entries when a recipient is replaced.
 * Outgoing email logger (custom table, list table, detail modal with HTML/raw views).
 * Track whitelist rewrites on each log row (original recipient + Filtered badge).
 * Logging settings: enable/disable, max logs, age-based retention.
 * Resend, bulk delete, search, and status views (sent / failed / filtered).
 * Top-level **Outgoing Email** admin menu with branded UI.
 * Privacy policy helper content and uninstall cleanup of logs/options.

## Meta

 *  Version **1.1.2**
 *  Last updated **19 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.0 or higher **
 *  Tested up to **7.0.1**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [email](https://wordpress.org/plugins/tags/email/)[filter](https://wordpress.org/plugins/tags/filter/)
   [logger](https://wordpress.org/plugins/tags/logger/)[staging](https://wordpress.org/plugins/tags/staging/)
   [whitelist](https://wordpress.org/plugins/tags/whitelist/)
 *  [Advanced View](https://wordpress.org/plugins/zdn-whitelist-outgoing-email/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/zdn-whitelist-outgoing-email/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/zdn-whitelist-outgoing-email/reviews/)

## Contributors

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

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/zdn-whitelist-outgoing-email/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://ko-fi.com/cuongquach)