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

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.