Emerge Mail

Changelog

1.2.0

  • New: Status column on the connections list. Surfaces “Active”, “Cooldown (Xm)” (connection currently skipped by the orchestrator after a recent error), and “Expired” (token refresh failed) so the failover-eligibility of each mailbox is visible at a glance.
  • New: Reconnect action on expired connections. One click re-runs the OAuth flow for the same provider and upserts tokens in place, putting the mailbox back into the failover pool without re-adding it from scratch.
  • Fix: connections settings form failed with “The link you followed has expired” on sites that also had Emerge Campaigns installed. Both plugins were registering admin_init handlers that triggered on any POST containing emerge_save_settings, so one plugin’s nonce check would short-circuit the other’s form submit. Both plugins’ admin handlers are now scoped to their own admin pages.
  • Changed: all form-submit triggers and nonce actions renamed from the generic emerge_* prefix to emerge_mail_*. Specifically: emerge_save_settings → emerge_mail_save_settings, emerge_save_email_controls → emerge_mail_save_email_controls, emerge_disconnect → emerge_mail_disconnect, emerge_test_send → emerge_mail_test_send, and the matching nonce action strings. Two-plugin sites no longer share any handler-trigger key names with Emerge Campaigns.

1.1.0

  • New: “Other admin notices” catch-all in Email Controls. When enabled, suppresses any email sent solely to the Administration Email Address that isn’t already covered by a specific filter (WooCommerce order notifications, security alerts, backup reports, etc.). Use the emerge_mail_suppress_other_admin filter to whitelist specific messages.
  • New: unified Activity Log replaces the Suppression Log. Stores suppressed notifications, provider send errors, and synchronous recipient bounces in one table with type and severity filters.
  • New (pro): synchronous bounce detection. Provider errors from Gmail/Microsoft Graph that indicate recipient-side rejection (invalid address, mailbox full, user unknown) are classified and logged as send.bounce.* events.
  • New (pro): provider send-error logging. Quota-exceeded, auth-expired, and other provider failures are logged as send.error.* events.
  • New: emerge_mail_event_logged action — fires after each log entry. Subscribers receive a hydrated Event DTO and can filter by type prefix ($event->type_starts_with(‘send.bounce.hard.’)).
  • New: emerge_mail_after_send_attempt action — fires once per mailbox attempt with the connection id, message, and outcome. Useful for third-party logging integrations.
  • New: pro feature gate via the EMERGE_MAIL_PRO constant (and emerge_mail_pro_enabled filter). All pro features route through Pro_Gate::is_enabled().
  • Changed: wp_mail() return value now reflects the failure type. Transport-side failures (provider quota, auth expired, provider 5xx, network blip — classified as send.error.*) fall back to WordPress’s default mail delivery, preserving the multi-provider / multi-filter fallback chain the previous version relied on. Recipient-side failures (invalid address, mailbox full, user unknown — classified as send.bounce.*) return false, since no transport can rescue them — callers like Emerge Campaigns and contact-form plugins can detect and record the failure. The fallback is also preserved for the “no mailbox configured yet” case. Override the default via the new emerge_mail_fallback_on_failure filter (4th param is the classified event type).
  • Changed: the “Emerge Mail: connection failure” admin notice is now scoped to the WordPress Dashboard and the Plugins screen. It no longer leaks into every other plugin’s admin pages.
  • Schema: table renamed from emerge_suppression_log to emerge_mail_event_log. Added severity, connection_id, message_id columns. Existing suppression rows and settings migrated in place on first boot.

1.0.0

  • Initial release.
  • OAuth connections to Gmail and to all Microsoft account types (personal Outlook/Hotmail/Live and Microsoft 365 work/school).
  • Multiple mailboxes per site with active-first routing and automatic failover (with per-connection cooldown after errors).
  • Optional bulk-send throttle that rotates connections during detected bursts.
  • Per-connection From email override for verified send-as aliases.
  • Configurable Sender settings: custom From name (defaults to site title), opt-in Reply-To-to-admin-email when the sender differs, ignore plugin-set From header.
  • Full wp_mail mapping: attachments, Cc/Bcc from headers, multipart alternative, comma-separated address lists with quoted display names, non-UTF-8 charsets, RFC 2047 header encoding.
  • Send-test button per connection.
  • Email Controls page: suppress eight WordPress core admin/editor self-notifications.
  • Suppression Log custom table with WP list-table UI, type filter, bulk delete, and daily 30-day pruning.
  • Per-connection failure visibility on the settings screen plus a site-wide admin notice on recent failures.
  • Hourly token maintenance via Action Scheduler (WP-Cron fallback).
  • Safe fallback to default WordPress mail delivery on any provider failure.
  • Filter hooks for cooldown duration, bulk thresholds, HTTP timeouts and request args, token-refresh timing, final MIME output, Microsoft saveToSentItems, suppression catalog, and log retention.

Plugin Website
Visit website

Author
Redigit
Version:
1.2.0
Last Updated
June 13, 2026
Requires
WordPress 6.0
Tested Up To
WordPress 7.0
Requires PHP
8.1

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.