=== Mail Doctor === Contributors: Sarfraj Yusuf Tags: woocommerce, email, smtp, deliverability, logging Requires at least: 6.0 Tested up to: 7.0 Requires PHP: 8.1 Stable tag: 1.1.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Deliver WooCommerce emails with confidence using authenticated SMTP transports, visual diagnostics, and automated retries. == Description == Mail Doctor replaces WordPress' default `wp_mail` stack with authenticated SMTP or provider APIs plus the operational tooling fast-moving stores need. It is written for merchants, agencies, and reliability teams that want hard proof their receipts, fulfillment notices, and alerts land every time. = Feature Highlights = * **Deliverability with guardrails** – Route WooCommerce or all site email through your preferred SMTP/API provider, lock the From identity, and fail over gracefully when third-party endpoints go dark. * **One-click diagnostics** – Send live tests with TLS/auth badges, latency metrics, DNS posture (SPF/DKIM/DMARC), and actionable warnings the moment something drifts. * **Reliable retries & queue control** – Automatic exponential backoff, manual retry orchestration, Action Scheduler integration, and a “run queue now” control for urgent flushes. * **Deep visibility** – Searchable logs with `.eml` downloads, header/body inspection, filterable status views, and CSV exports for audits. * **Email template workflow** – Version history, diff previews, modal device switcher, and send-test flows for the WooCommerce template editor. * **Automation surface** – REST API endpoints and WP-CLI commands mirror UI actions so you can script smoke tests, tail logs, or trigger retries in CI/CD pipelines. * **Privacy-first options** – Hash or redact recipients, tune retention windows, and honour GDPR requests through the bundled exporters/erasers. * **Operational alerts** – Instant Slack/email failure alerts plus weekly digests summarising throughput, latency, retries, and queue health. == External Services == This plugin acts as a connector between your WordPress site and third-party email providers. When you configure an external service (SMTP or API), this plugin transmits email data to that provider for delivery. **Data Sent:** * Sender and Recipient names and email addresses. * Email subject, body content (HTML/Text), and headers. * Timestamps and potentially the originating IP address. **When Payload is Sent:** * Immediately whenever an email is triggered by WordPress, WooCommerce, or another plugin, *if* that specific provider is currently set as your active transport. **Purpose:** * To reliably deliver transactional emails to user inboxes using the provider's infrastructure. **Supported Services & Legal Links:** * **Google / Gmail** * [Terms of Service](https://policies.google.com/terms) * [Privacy Policy](https://policies.google.com/privacy) * **Endpoints**: `accounts.google.com`, `oauth2.googleapis.com` * **Microsoft / Outlook / Office 365** * [Terms of Use](https://www.microsoft.com/en-us/legal/terms-of-use) * [Privacy Statement](https://privacy.microsoft.com/en-us/privacystatement) * **Endpoints**: `login.microsoftonline.com`, `outlook.office365.com` * **Twilio SendGrid** * Links: [terms of service](https://www.twilio.com/en-us/legal/tos), [privacy policy](https://www.twilio.com/en-us/legal/privacy) * **Endpoints**: `api.sendgrid.com` * **Mailgun** * Links: [terms of service](https://www.mailgun.com/legal/terms/), [privacy policy](https://www.mailgun.com/legal/privacy-policy/) * **Endpoints**: `api.mailgun.net`, `api.eu.mailgun.net` (and other region equivalents) * **Domain validation**: When you click "Verify Domain" in the plugin settings, the plugin queries `https://api.mailgun.net/v3/domains/{your-domain}` (or the EU equivalent) to check DNS records (SPF, DKIM, MX). Data sent: your Mailgun API key and the domain name. No email content is transmitted during this check. * **Amazon SES** * Links: [terms of service](https://aws.amazon.com/service-terms/), [privacy policy](https://aws.amazon.com/privacy/) * **Endpoints**: `email.us-east-1.amazonaws.com`, `email-smtp.us-east-1.amazonaws.com` (and other `*.amazonaws.com` region equivalents) * **Postmark** * Links: [terms of service](https://postmarkapp.com/terms), [privacy policy](https://postmarkapp.com/privacy) * **Endpoints**: `api.postmarkapp.com` * **SparkPost** * Links: [terms of service](https://www.sparkpost.com/policies/tou/), [privacy policy](https://www.sparkpost.com/policies/privacy/) * **Endpoints**: `api.sparkpost.com` * **Brevo (formerly Sendinblue)** * Links: [terms of service](https://www.brevo.com/legal/termsofuse/), [privacy policy](https://www.brevo.com/legal/privacypolicy/) * **Endpoints**: `smtp-relay.brevo.com` (SMTP relay); configurable SMTP host per your provider settings. * This plugin transmits the same email data (sender, recipients, subject, body) to Brevo's SMTP relay servers when Brevo is configured as the active transport. **OAuth Authentication Endpoints:** When you connect Google or Microsoft accounts using OAuth2, this plugin communicates with the following authentication endpoints to obtain and refresh access tokens: * **Google OAuth2** * Authorization: `https://accounts.google.com/o/oauth2/v2/auth` * Token exchange: `https://oauth2.googleapis.com/token` * Data sent: Client ID, authorization code, and redirect URI * [Google API Terms of Service](https://developers.google.com/terms) * [Google Privacy Policy](https://policies.google.com/privacy) * **Microsoft OAuth2 (Outlook/Office 365)** * Authorization: `https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize` * Token exchange: `https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token` * Data sent: Client ID, client secret, authorization code, and redirect URI * [Microsoft API Terms of Use](https://docs.microsoft.com/en-us/legal/microsoft-apis/terms-of-use) * [Microsoft Privacy Statement](https://privacy.microsoft.com/en-us/privacystatement) = Quick Start = 1. Review the documentation link in the Documentation section for the full tour and terminology. 2. Configure SMTP/API credentials on **WooCommerce → Mail Doctor → Settings**. 3. Send a test email from the **Status** tab and verify DNS/auth posture. 4. Visit **Logs** to confirm entries are stored and retries are scheduled as expected. 5. Enable alerts and weekly digests so the team knows when to act. = Documentation = Documentation: https://wpdoctorpro.com/docs/mail-doctor/welcome-to-mail-doctor – guides, setup, troubleshooting, and support. = Privacy controls = Mail Doctor ships with built-in privacy tooling under **Settings → Logging & Privacy**: * **Mask recipient emails:** Hashes addresses before storing them in logs. * **Redact headers and bodies:** Keeps metadata only so sensitive content is not persisted. * **Retention windows:** Separate sliders for sent, failed, and payload data; shorten for stricter compliance. * **GDPR exporter/eraser:** WordPress privacy tools are wired to export or anonymise recipient rows on request. * **Role-based access:** Admin UI and AJAX endpoints are gated by `manage_woocommerce`/`manage_options`. = Troubleshooting = * Red notices on the Status tab usually indicate DNS or authentication drift—re-run the onboarding checks and confirm credentials with your provider. * If the queue stalls, visit **Settings → Retry & Queue** and use **Run queue now**; check your cron runner or Action Scheduler if jobs remain pending. * Use the `.eml` download from each log entry when escalating to your SMTP provider—they can analyse the exact payload and SMTP transcript. * For privacy incidents, toggle Privacy Mode and shorten retention while you investigate; the GDPR exporter/eraser handles customer requests. == Support & Packaging == * Requirements: WordPress 6.0+, WooCommerce (latest), PHP 8.1–8.3 with cURL/JSON; OpenSSL recommended for encrypted secret storage. * Included in download: `mail-doctor/` plugin folder, `Documentation/` offline HTML docs, `readme.txt`, `changelog.txt`, and `LICENSE`. * Support/Contact: See the Documentation section for guides and support links. When requesting help, include your WP/Woo versions, provider, and a recent log ID from **Mail Doctor → Logs**. == Installation == 1. Upload the `mail-doctor` folder to `/wp-content/plugins/` or install via the WordPress admin. 2. Activate the plugin. 3. Navigate to **WooCommerce → Mail Doctor → Settings** and enter your SMTP credentials. 4. Use the **Status** tab to send a test message and review diagnostics. Detailed installation and provider recipes are available in the Documentation section. == Frequently Asked Questions == = Does this plugin send all emails over SMTP? = By default, only WooCommerce emails are routed through SMTP. You can toggle the scope to **All wp_mail calls** on the settings tab. = Which SMTP providers are supported? = Any provider offering SMTP access (SendGrid, Mailgun, SES, Postmark, Gmail with App Passwords, etc.). Use the appropriate host, port, encryption, username, and password supplied by your provider. = Will Mail Doctor work without WooCommerce? = Most features (SMTP override, logging, retries) work without WooCommerce. Woo-specific tools (previews, email toggles) require WooCommerce to be active. = Where are logs stored? = Email activity is stored in the custom database table `{prefix}maildoctor_log`. Logs are automatically pruned based on the retention period set in the plugin settings (default 30 days). = How do retries work? = Failed emails are marked with a retry schedule using exponential backoff. A cron worker (`maildoctor_retry_cron`) runs every five minutes to process due entries. You can also trigger a manual retry from the Logs tab. = How can I get help? = See the Documentation section for configuration guides and playbooks. If you are on a support contract, provide log IDs and the output of `wp maildoctor status` when you reach out so the team can assist quickly. == Screenshots == 1. Status dashboard with diagnostics and DNS checks. 2. Email log viewer with filtering and retry controls. 3. SMTP configuration and WooCommerce email toggles. == Changelog == = 1.1.0 = * Stepped visual connection test flow in settings. * Real-time connection status dot in header. * Slide-over drawer for log details inspection in logs tab. * Brand-colored SMTP provider selection cards with custom hover glows and active outlines. * Redesigned license page UI with premium two-column layout. * Glowing status badges with animations. = 1.0.1 = * Fixed an issue where the plugin was not properly deleted on uninstall. = 1.0.0 = * Launch release with authenticated SMTP/API transports plus provider presets for Mailgun, SendGrid, SES, Postmark, SparkPost, and generic HTTP relays. * Added test email workflows (WP admin, REST API, and WP-CLI) with TLS/auth diagnostics, DNS posture, and latency metrics. * Introduced searchable email logging with `.eml` exports, CSV downloads, manual retry, quarantine, and queue draining controls. * Delivered privacy tooling (hashing, redaction, retention policies), capability checks, and GDPR exporter/eraser integrations. * Included Mail Doctor docs hub with onboarding guide, provider recipes, and troubleshooting playbooks for hand-offs.