{"id":272906,"date":"2026-03-24T17:16:53","date_gmt":"2026-03-24T17:16:53","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/mail-doctor\/"},"modified":"2026-03-25T16:15:38","modified_gmt":"2026-03-25T16:15:38","slug":"mail-doctor","status":"publish","type":"plugin","link":"https:\/\/zh-sg.wordpress.org\/plugins\/mail-doctor\/","author":23432821,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.1","stable_tag":"1.0.1","tested":"6.9.4","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"Mail Doctor","header_author":"WP Doctor Pro","header_description":"SMTP deliverability, diagnostics, and retry toolkit for WooCommerce emails.","assets_banners_color":"abe68e","last_updated":"2026-03-25 16:15:38","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wpdoctorpro.com\/products\/mail-doctor","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":176,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"sarfraj85","date":"2026-03-24 17:16:09"},"1.0.1":{"tag":"1.0.1","author":"sarfraj85","date":"2026-03-25 16:15:38"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3490229,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":3490229,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3490229,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3491068,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3490229,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3490229,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3490229,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3490229,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"Admin Dashboard: Status dashboard with diagnostics and DNS checks.","2":"SMTP Settings: SMTP settings with multiple provider.","3":"Mail Log: Email log viewer with filtering and retry controls.","4":"Mail Dcotor Guide: Guide to use Mail Doctor &amp; Support."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[17561,267,1522,6696,286],"plugin_category":[41,45],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-272906","plugin","type-plugin","status-publish","hentry","plugin_tags-deliverability","plugin_tags-email","plugin_tags-logging","plugin_tags-smtp","plugin_tags-woocommerce","plugin_category-communication","plugin_category-ecommerce","plugin_committers-sarfraj85"],"banners":{"banner":"https:\/\/ps.w.org\/mail-doctor\/assets\/banner-772x250.png?rev=3491068","banner_2x":"https:\/\/ps.w.org\/mail-doctor\/assets\/banner-1544x500.png?rev=3490229","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/mail-doctor\/assets\/icon.svg?rev=3490229","icon":"https:\/\/ps.w.org\/mail-doctor\/assets\/icon.svg?rev=3490229","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/mail-doctor\/assets\/screenshot-1.png?rev=3490229","caption":"Admin Dashboard: Status dashboard with diagnostics and DNS checks."},{"src":"https:\/\/ps.w.org\/mail-doctor\/assets\/screenshot-2.png?rev=3490229","caption":"SMTP Settings: SMTP settings with multiple provider."},{"src":"https:\/\/ps.w.org\/mail-doctor\/assets\/screenshot-3.png?rev=3490229","caption":"Mail Log: Email log viewer with filtering and retry controls."},{"src":"https:\/\/ps.w.org\/mail-doctor\/assets\/screenshot-4.png?rev=3490229","caption":"Mail Dcotor Guide: Guide to use Mail Doctor &amp; Support."}],"raw_content":"<!--section=description-->\n<p>Mail Doctor replaces WordPress' default <code>wp_mail<\/code> 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.<\/p>\n\n<h4>Feature Highlights<\/h4>\n\n<ul>\n<li><strong>Deliverability with guardrails<\/strong> \u2013 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.<\/li>\n<li><strong>One-click diagnostics<\/strong> \u2013 Send live tests with TLS\/auth badges, latency metrics, DNS posture (SPF\/DKIM\/DMARC), and actionable warnings the moment something drifts.<\/li>\n<li><strong>Reliable retries &amp; queue control<\/strong> \u2013 Automatic exponential backoff, manual retry orchestration, Action Scheduler integration, and a \u201crun queue now\u201d control for urgent flushes.<\/li>\n<li><strong>Deep visibility<\/strong> \u2013 Searchable logs with <code>.eml<\/code> downloads, header\/body inspection, filterable status views, and CSV exports for audits.<\/li>\n<li><strong>Email template workflow<\/strong> \u2013 Version history, diff previews, modal device switcher, and send-test flows for the WooCommerce template editor.<\/li>\n<li><strong>Automation surface<\/strong> \u2013 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.<\/li>\n<li><strong>Privacy-first options<\/strong> \u2013 Hash or redact recipients, tune retention windows, and honour GDPR requests through the bundled exporters\/erasers.<\/li>\n<li><strong>Operational alerts<\/strong> \u2013 Instant Slack\/email failure alerts plus weekly digests summarising throughput, latency, retries, and queue health.<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>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.<\/p>\n\n<p><strong>Data Sent:<\/strong>\n*   Sender and Recipient names and email addresses.\n*   Email subject, body content (HTML\/Text), and headers.\n*   Timestamps and potentially the originating IP address.<\/p>\n\n<p><strong>When Payload is Sent:<\/strong>\n*   Immediately whenever an email is triggered by WordPress, WooCommerce, or another plugin, <em>if<\/em> that specific provider is currently set as your active transport.<\/p>\n\n<p><strong>Purpose:<\/strong>\n*   To reliably deliver transactional emails to user inboxes using the provider's infrastructure.<\/p>\n\n<p><strong>Supported Services &amp; Legal Links:<\/strong><\/p>\n\n<ul>\n<li><p><strong>Google \/ Gmail<\/strong><\/p>\n\n<ul>\n<li><a href=\"https:\/\/policies.google.com\/terms\">Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/policies.google.com\/privacy\">Privacy Policy<\/a><\/li>\n<li><strong>Endpoints<\/strong>: <code>accounts.google.com<\/code>, <code>oauth2.googleapis.com<\/code><\/li>\n<\/ul><\/li>\n<li><p><strong>Microsoft \/ Outlook \/ Office 365<\/strong><\/p>\n\n<ul>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/legal\/terms-of-use\">Terms of Use<\/a><\/li>\n<li><a href=\"https:\/\/privacy.microsoft.com\/en-us\/privacystatement\">Privacy Statement<\/a><\/li>\n<li><strong>Endpoints<\/strong>: <code>login.microsoftonline.com<\/code>, <code>outlook.office365.com<\/code><\/li>\n<\/ul><\/li>\n<li><p><strong>Twilio SendGrid<\/strong><\/p>\n\n<ul>\n<li>Links: <a href=\"https:\/\/www.twilio.com\/en-us\/legal\/tos\">terms of service<\/a>, <a href=\"https:\/\/www.twilio.com\/en-us\/legal\/privacy\">privacy policy<\/a><\/li>\n<li><strong>Endpoints<\/strong>: <code>api.sendgrid.com<\/code><\/li>\n<\/ul><\/li>\n<li><p><strong>Mailgun<\/strong><\/p>\n\n<ul>\n<li>Links: <a href=\"https:\/\/www.mailgun.com\/legal\/terms\/\">terms of service<\/a>, <a href=\"https:\/\/www.mailgun.com\/legal\/privacy-policy\/\">privacy policy<\/a><\/li>\n<li><strong>Endpoints<\/strong>: <code>api.mailgun.net<\/code>, <code>api.eu.mailgun.net<\/code> (and other region equivalents)<\/li>\n<li><strong>Domain validation<\/strong>: When you click \"Verify Domain\" in the plugin settings, the plugin queries <code>https:\/\/api.mailgun.net\/v3\/domains\/{your-domain}<\/code> (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.<\/li>\n<\/ul><\/li>\n<li><p><strong>Amazon SES<\/strong><\/p>\n\n<ul>\n<li>Links: <a href=\"https:\/\/aws.amazon.com\/service-terms\/\">terms of service<\/a>, <a href=\"https:\/\/aws.amazon.com\/privacy\/\">privacy policy<\/a><\/li>\n<li><strong>Endpoints<\/strong>: <code>email.us-east-1.amazonaws.com<\/code>, <code>email-smtp.us-east-1.amazonaws.com<\/code> (and other <code>*.amazonaws.com<\/code> region equivalents)<\/li>\n<\/ul><\/li>\n<li><p><strong>Postmark<\/strong><\/p>\n\n<ul>\n<li>Links: <a href=\"https:\/\/postmarkapp.com\/terms\">terms of service<\/a>, <a href=\"https:\/\/postmarkapp.com\/privacy\">privacy policy<\/a><\/li>\n<li><strong>Endpoints<\/strong>: <code>api.postmarkapp.com<\/code><\/li>\n<\/ul><\/li>\n<li><p><strong>SparkPost<\/strong><\/p>\n\n<ul>\n<li>Links: <a href=\"https:\/\/www.sparkpost.com\/policies\/tou\/\">terms of service<\/a>, <a href=\"https:\/\/www.sparkpost.com\/policies\/privacy\/\">privacy policy<\/a><\/li>\n<li><strong>Endpoints<\/strong>: <code>api.sparkpost.com<\/code><\/li>\n<\/ul><\/li>\n<li><p><strong>Brevo (formerly Sendinblue)<\/strong><\/p>\n\n<ul>\n<li>Links: <a href=\"https:\/\/www.brevo.com\/legal\/termsofuse\/\">terms of service<\/a>, <a href=\"https:\/\/www.brevo.com\/legal\/privacypolicy\/\">privacy policy<\/a><\/li>\n<li><strong>Endpoints<\/strong>: <code>smtp-relay.brevo.com<\/code> (SMTP relay); configurable SMTP host per your provider settings.<\/li>\n<li>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.<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<p><strong>OAuth Authentication Endpoints:<\/strong><\/p>\n\n<p>When you connect Google or Microsoft accounts using OAuth2, this plugin communicates with the following authentication endpoints to obtain and refresh access tokens:<\/p>\n\n<ul>\n<li><p><strong>Google OAuth2<\/strong><\/p>\n\n<ul>\n<li>Authorization: <code>https:\/\/accounts.google.com\/o\/oauth2\/v2\/auth<\/code><\/li>\n<li>Token exchange: <code>https:\/\/oauth2.googleapis.com\/token<\/code><\/li>\n<li>Data sent: Client ID, authorization code, and redirect URI<\/li>\n<li><a href=\"https:\/\/developers.google.com\/terms\">Google API Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/policies.google.com\/privacy\">Google Privacy Policy<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>Microsoft OAuth2 (Outlook\/Office 365)<\/strong><\/p>\n\n<ul>\n<li>Authorization: <code>https:\/\/login.microsoftonline.com\/{tenant}\/oauth2\/v2.0\/authorize<\/code><\/li>\n<li>Token exchange: <code>https:\/\/login.microsoftonline.com\/{tenant}\/oauth2\/v2.0\/token<\/code><\/li>\n<li>Data sent: Client ID, client secret, authorization code, and redirect URI<\/li>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/legal\/microsoft-apis\/terms-of-use\">Microsoft API Terms of Use<\/a><\/li>\n<li><a href=\"https:\/\/privacy.microsoft.com\/en-us\/privacystatement\">Microsoft Privacy Statement<\/a><\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h4>Quick Start<\/h4>\n\n<ol>\n<li>Review the documentation link in the Documentation section for the full tour and terminology.<\/li>\n<li>Configure SMTP\/API credentials on <strong>WooCommerce \u2192 Mail Doctor \u2192 Settings<\/strong>.<\/li>\n<li>Send a test email from the <strong>Status<\/strong> tab and verify DNS\/auth posture.<\/li>\n<li>Visit <strong>Logs<\/strong> to confirm entries are stored and retries are scheduled as expected.<\/li>\n<li>Enable alerts and weekly digests so the team knows when to act.<\/li>\n<\/ol>\n\n<h4>Documentation<\/h4>\n\n<p>Documentation: https:\/\/wpdoctorpro.com\/docs\/mail-doctor\/welcome-to-mail-doctor \u2013 guides, setup, troubleshooting, and support.<\/p>\n\n<h4>Privacy controls<\/h4>\n\n<p>Mail Doctor ships with built-in privacy tooling under <strong>Settings \u2192 Logging &amp; Privacy<\/strong>:<\/p>\n\n<ul>\n<li><strong>Mask recipient emails:<\/strong> Hashes addresses before storing them in logs.<\/li>\n<li><strong>Redact headers and bodies:<\/strong> Keeps metadata only so sensitive content is not persisted.<\/li>\n<li><strong>Retention windows:<\/strong> Separate sliders for sent, failed, and payload data; shorten for stricter compliance.<\/li>\n<li><strong>GDPR exporter\/eraser:<\/strong> WordPress privacy tools are wired to export or anonymise recipient rows on request.<\/li>\n<li><strong>Role-based access:<\/strong> Admin UI and AJAX endpoints are gated by <code>manage_woocommerce<\/code>\/<code>manage_options<\/code>.<\/li>\n<\/ul>\n\n<h4>Troubleshooting<\/h4>\n\n<ul>\n<li>Red notices on the Status tab usually indicate DNS or authentication drift\u2014re-run the onboarding checks and confirm credentials with your provider.<\/li>\n<li>If the queue stalls, visit <strong>Settings \u2192 Retry &amp; Queue<\/strong> and use <strong>Run queue now<\/strong>; check your cron runner or Action Scheduler if jobs remain pending.<\/li>\n<li>Use the <code>.eml<\/code> download from each log entry when escalating to your SMTP provider\u2014they can analyse the exact payload and SMTP transcript.<\/li>\n<li>For privacy incidents, toggle Privacy Mode and shorten retention while you investigate; the GDPR exporter\/eraser handles customer requests.<\/li>\n<\/ul>\n\n<h3>Support &amp; Packaging<\/h3>\n\n<ul>\n<li>Requirements: WordPress 6.0+, WooCommerce (latest), PHP 8.1\u20138.3 with cURL\/JSON; OpenSSL recommended for encrypted secret storage.<\/li>\n<li>Included in download: <code>mail-doctor\/<\/code> plugin folder, <code>Documentation\/<\/code> offline HTML docs, <code>readme.txt<\/code>, <code>changelog.txt<\/code>, and <code>LICENSE<\/code>.<\/li>\n<li>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 <strong>Mail Doctor \u2192 Logs<\/strong>.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>mail-doctor<\/code> folder to <code>\/wp-content\/plugins\/<\/code> or install via the WordPress admin.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Navigate to <strong>WooCommerce \u2192 Mail Doctor \u2192 Settings<\/strong> and enter your SMTP credentials.<\/li>\n<li>Use the <strong>Status<\/strong> tab to send a test message and review diagnostics.<\/li>\n<\/ol>\n\n<p>Detailed installation and provider recipes are available in the Documentation section.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20send%20all%20emails%20over%20smtp%3F\"><h3>Does this plugin send all emails over SMTP?<\/h3><\/dt>\n<dd><p>By default, only WooCommerce emails are routed through SMTP. You can toggle the scope to <strong>All wp_mail calls<\/strong> on the settings tab.<\/p><\/dd>\n<dt id=\"which%20smtp%20providers%20are%20supported%3F\"><h3>Which SMTP providers are supported?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"will%20mail%20doctor%20work%20without%20woocommerce%3F\"><h3>Will Mail Doctor work without WooCommerce?<\/h3><\/dt>\n<dd><p>Most features (SMTP override, logging, retries) work without WooCommerce. Woo-specific tools (previews, email toggles) require WooCommerce to be active.<\/p><\/dd>\n<dt id=\"where%20are%20logs%20stored%3F\"><h3>Where are logs stored?<\/h3><\/dt>\n<dd><p>Email activity is stored in the custom database table <code>{prefix}maildoctor_log<\/code>. Logs are automatically pruned based on the retention period set in the plugin settings (default 30 days).<\/p><\/dd>\n<dt id=\"how%20do%20retries%20work%3F\"><h3>How do retries work?<\/h3><\/dt>\n<dd><p>Failed emails are marked with a retry schedule using exponential backoff. A cron worker (<code>maildoctor_retry_cron<\/code>) runs every five minutes to process due entries. You can also trigger a manual retry from the Logs tab.<\/p><\/dd>\n<dt id=\"how%20can%20i%20get%20help%3F\"><h3>How can I get help?<\/h3><\/dt>\n<dd><p>See the Documentation section for configuration guides and playbooks. If you are on a support contract, provide log IDs and the output of <code>wp maildoctor status<\/code> when you reach out so the team can assist quickly.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed an issue where the plugin was not properly deleted on uninstall.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Launch release with authenticated SMTP\/API transports plus provider presets for Mailgun, SendGrid, SES, Postmark, SparkPost, and generic HTTP relays.<\/li>\n<li>Added test email workflows (WP admin, REST API, and WP-CLI) with TLS\/auth diagnostics, DNS posture, and latency metrics.<\/li>\n<li>Introduced searchable email logging with <code>.eml<\/code> exports, CSV downloads, manual retry, quarantine, and queue draining controls.<\/li>\n<li>Delivered privacy tooling (hashing, redaction, retention policies), capability checks, and GDPR exporter\/eraser integrations.<\/li>\n<li>Included Mail Doctor docs hub with onboarding guide, provider recipes, and troubleshooting playbooks for hand-offs.<\/li>\n<\/ul>","raw_excerpt":"Deliver WooCommerce emails with confidence using authenticated SMTP transports, visual diagnostics, and automated retries.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/272906","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=272906"}],"author":[{"embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sarfraj85"}],"wp:attachment":[{"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=272906"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=272906"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=272906"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=272906"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=272906"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=272906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}