{"id":358439,"date":"2026-09-07T13:04:18","date_gmt":"2026-09-07T13:04:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/techwizard-mail-smtp\/"},"modified":"2026-09-07T13:03:45","modified_gmt":"2026-09-07T13:03:45","slug":"techwizard-mail-smtp","status":"publish","type":"plugin","link":"https:\/\/test.wordpress.org\/plugins\/techwizard-mail-smtp\/","author":23383957,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1","requires":"6.6","requires_php":"8.2","requires_plugins":null,"header_name":"TechWizard Mail SMTP","header_author":"TechWizard","header_description":"Configure and diagnose reliable WordPress email delivery through SMTP and transactional mail services.","assets_banners_color":"3e5c7c","last_updated":"2026-09-07 13:03:45","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/techwizard.hu\/wordpress-plugin-fejlesztes\/techwizard-mail-smtp\/","header_author_uri":"https:\/\/techwizard.hu\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":52,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"techwizardkft","date":"2026-09-07 13:03:45","revision":3684965}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3684960,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3684960,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3684960,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3684960,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3684960,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[17561,23519,267,450,6696],"plugin_category":[41],"plugin_contributors":[275544],"plugin_business_model":[],"class_list":["post-358439","plugin","type-plugin","status-publish","hentry","plugin_tags-deliverability","plugin_tags-diagnostics","plugin_tags-email","plugin_tags-mail","plugin_tags-smtp","plugin_category-communication","plugin_contributors-techwizardkft","plugin_committers-techwizardkft"],"banners":{"banner":"https:\/\/ps.w.org\/techwizard-mail-smtp\/assets\/banner-772x250.png?rev=3684960","banner_2x":"https:\/\/ps.w.org\/techwizard-mail-smtp\/assets\/banner-1544x500.png?rev=3684960","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/techwizard-mail-smtp\/assets\/icon.svg?rev=3684960","icon":"https:\/\/ps.w.org\/techwizard-mail-smtp\/assets\/icon.svg?rev=3684960","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>TechWizard Mail SMTP provides one primary custom SMTP or direct API connection for Gmail, Brevo, SendGrid, Mailgun, Postmark, Resend, SMTP2GO, Amazon SES, Microsoft Graph, MailerSend, Mailjet, Elastic Email, or Bird. It includes sender policies, test email, failure-only diagnostics, local conflict detection, manual SPF\/DMARC\/DKIM status checks, secret-free configuration transfer, and fail-safe migration of public SMTP settings from WP Mail SMTP, Easy WP SMTP, or Post SMTP without copying credentials.<\/p>\n\n<p>Passwords, API credentials, Client Secrets, and Refresh Tokens are stored separately in non-autoloaded database options and are never read back into admin forms. Normal setup requires no wp-config.php editing. Failure diagnostics do not store recipients, subjects, bodies, headers, attachments, or raw provider responses.<\/p>\n\n<p>Every provider connection belongs to the site administrator and communicates directly with that provider. Gmail requests only <code>gmail.send<\/code>; Microsoft requests only offline access and delegated <code>Mail.Send<\/code>; API adapters use credentials created in the administrator's own provider account. No TechWizard OAuth relay, credential broker, shared provider account, or email proxy is used. Activating a route disables every other route without deleting its settings.<\/p>\n\n<p>The manual DNS check runs only when submitted by an administrator and retains only short-lived found, missing, unavailable, or not-checked states. It does not store or display TXT record content and does not guarantee delivery.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin directory to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate TechWizard Mail SMTP through the Plugins screen.<\/li>\n<li>Open TechWizard &gt; Mail SMTP.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"external%20services%20and%20data%20disclosure\"><h3>External services and data disclosure<\/h3><\/dt>\n<dd><\/dd>\n<dt id=\"google%20oauth%20and%20gmail%20api\"><h3>Google OAuth and Gmail API<\/h3><\/dt>\n<dd><p>The Gmail adapter requires a Google account, a Google Cloud project with Gmail API enabled, and an OAuth Web application created and controlled by the site administrator. Google account limits and terms apply.<\/p>\n\n<p>When an administrator clicks Connect, the browser is redirected to <code>https:\/\/accounts.google.com\/o\/oauth2\/v2\/auth<\/code> with the OAuth Client ID, exact callback URL, requested <code>gmail.send<\/code> scope, and a single-use security state. After consent, the site sends the authorization code, Client ID, Client Secret, and callback URL to <code>https:\/\/oauth2.googleapis.com\/token<\/code>. Before each Gmail delivery, the site sends the stored Refresh Token, Client ID, and Client Secret to the same token endpoint to obtain a short-lived Access Token.<\/p>\n\n<p>When Gmail is active and WordPress sends an email, the plugin sends the complete RFC 2822 MIME message to <code>https:\/\/gmail.googleapis.com\/gmail\/v1\/users\/me\/messages\/send<\/code>. This includes the sender, recipients, CC\/BCC recipients, subject, headers, message body, and any attachments supplied to <code>wp_mail()<\/code>. When an administrator disconnects Gmail, the stored Refresh Token is sent to <code>https:\/\/oauth2.googleapis.com\/revoke<\/code> for revocation before local removal. No Gmail data is sent merely by viewing the settings page.<\/p>\n\n<p>Google API Services User Data Policy: https:\/\/developers.google.com\/terms\/api-services-user-data-policy<\/p>\n\n<p>Google Privacy Policy: https:\/\/policies.google.com\/privacy<\/p>\n\n<p>Google Terms of Service: https:\/\/policies.google.com\/terms<\/p><\/dd>\n<dt id=\"brevo%20transactional%20api%20and%20smtp%20relay\"><h3>Brevo transactional API and SMTP relay<\/h3><\/dt>\n<dd><p>The Brevo setup guide is for a Brevo account owned and controlled by the site administrator. It explains how to verify a sender, authenticate a sending domain, and create either a dedicated v3 API key for direct HTTPS API delivery or a dedicated SMTP key for the alternative SMTP route. The plugin connects directly to <code>api.brevo.com<\/code> or <code>smtp-relay.brevo.com<\/code>; neither connection passes through TechWizard.<\/p>\n\n<p>Saving the connection settings does not contact Brevo. When an administrator sends a test email, or when a Brevo route is active and WordPress calls <code>wp_mail()<\/code>, the site sends the API key to <code>https:\/\/api.brevo.com\/v3\/smtp\/email<\/code> or the SMTP login and SMTP key to the relay for authentication. It also sends the complete email through Brevo. Email data can include the sender, recipients, CC\/BCC recipients, reply-to address, subject, message body, and attachments supplied to <code>wp_mail()<\/code>. A Brevo account is required, and Brevo account limits and terms apply.<\/p>\n\n<p>Brevo Privacy Policy: https:\/\/www.brevo.com\/legal\/privacypolicy\/<\/p>\n\n<p>Brevo Terms of Use: https:\/\/www.brevo.com\/legal\/termsofuse\/<\/p><\/dd>\n<dt id=\"sendgrid%20mail%20send%20api\"><h3>SendGrid Mail Send API<\/h3><\/dt>\n<dd><p>The SendGrid setup guide is for a SendGrid account owned and controlled by the site administrator. It explains how to verify a Single Sender or authenticate a sending domain and how to create a restricted API key with only Mail Send access. A SendGrid account is required; SendGrid plan, account, regional-subuser, and sending limits and terms apply.<\/p>\n\n<p>Saving the connection settings or merely viewing the settings page does not contact SendGrid. When an administrator sends a direct test, or when SendGrid is active and WordPress calls <code>wp_mail()<\/code>, the site sends the API key in a Bearer authorization header and the complete email to <code>https:\/\/api.sendgrid.com\/v3\/mail\/send<\/code> or, only for a configured EU regional subuser, <code>https:\/\/api.eu.sendgrid.com\/v3\/mail\/send<\/code>. Email data can include the sender, recipients, CC\/BCC recipients, reply-to address, subject, plain-text or HTML body, and attachments supplied to <code>wp_mail()<\/code>. The connection is direct and does not pass through TechWizard. An HTTP 202 response means SendGrid accepted the request; it does not prove final delivery.<\/p>\n\n<p>Twilio Privacy Notice: https:\/\/www.twilio.com\/en-us\/legal\/privacy<\/p>\n\n<p>Twilio Terms of Service: https:\/\/www.twilio.com\/en-us\/legal\/tos<\/p><\/dd>\n<dt id=\"mailgun%20mime%20messages%20api\"><h3>Mailgun MIME Messages API<\/h3><\/dt>\n<dd><p>The Mailgun setup guide is for a Mailgun account and sending domain owned and controlled by the site administrator. It explains how to add and authenticate a sending domain, select the same US or EU region in WordPress, and create a Domain Sending Key with access limited to that domain's message endpoints. A Mailgun account is required; Mailgun plan, account, domain, sending, recipient, and regional limits and terms apply.<\/p>\n\n<p>Saving the connection settings or merely viewing the settings page does not contact Mailgun. When an administrator sends a direct test, or when Mailgun is active and WordPress calls <code>wp_mail()<\/code>, the site sends the API key in an HTTP Basic authorization header plus the envelope recipients and complete MIME email to <code>https:\/\/api.mailgun.net\/v3\/{sending-domain}\/messages.mime<\/code> or <code>https:\/\/api.eu.mailgun.net\/v3\/{sending-domain}\/messages.mime<\/code>. Email data can include the sending domain, sender, recipients, CC\/BCC recipients, reply-to address, subject, headers, plain-text or HTML body, and attachments supplied to <code>wp_mail()<\/code>. The connection is direct and does not pass through TechWizard. An HTTP 200 response means Mailgun accepted the request; it does not prove final delivery.<\/p>\n\n<p>Mailgun Privacy Policy: https:\/\/www.mailgun.com\/legal\/privacy-policy\/<\/p>\n\n<p>Mailgun Terms of Service: https:\/\/www.mailgun.com\/legal\/terms\/<\/p><\/dd>\n<dt id=\"postmark%20email%20api\"><h3>Postmark Email API<\/h3><\/dt>\n<dd><p>The Postmark setup guide is for a Postmark account and Server owned and controlled by the site administrator. It explains how to verify a Sender Signature or sending domain and where to copy the Server API token. Use a Server API token for the selected Server, not an Account API token, SMTP token, or TechWizard-owned credential. A Postmark account is required; Postmark plan, account, Server, sender, message-stream, recipient, and sending limits and terms apply.<\/p>\n\n<p>Saving the connection settings or merely viewing the settings page does not contact Postmark. When an administrator sends a direct test, or when Postmark is active and WordPress calls <code>wp_mail()<\/code>, the site sends the Server API token in the <code>X-Postmark-Server-Token<\/code> header and the complete email to the fixed <code>https:\/\/api.postmarkapp.com\/email<\/code> endpoint. Email data can include the sender, recipients, CC\/BCC recipients, reply-to address, subject, custom headers, plain-text or HTML body, and attachments supplied to <code>wp_mail()<\/code>. The connection is direct and does not pass through TechWizard. The adapter uses the transactional <code>outbound<\/code> message stream, permits at most 50 combined recipients, and conservatively bounds the encoded request below Postmark's 10 MB total-message limit. An HTTP 200 response with <code>ErrorCode<\/code> 0 and a MessageID means Postmark accepted the request; it does not prove final delivery.<\/p>\n\n<p>Postmark Privacy Policy: https:\/\/postmarkapp.com\/privacy-policy<\/p>\n\n<p>Postmark Terms of Service: https:\/\/postmarkapp.com\/terms-of-service<\/p><\/dd>\n<dt id=\"resend%20email%20api\"><h3>Resend Email API<\/h3><\/dt>\n<dd><p>The Resend setup guide is for a Resend account and sending domain owned and controlled by the site administrator. It explains how to add and verify a domain with the SPF and DKIM records supplied by Resend and how to create a Sending access API key, preferably restricted to that domain. The API key is shown by Resend only once and remains write-only after it is saved in WordPress. A Resend account is required; Resend plan, account, domain, recipient, rate, quota, and sending limits and terms apply.<\/p>\n\n<p>Saving the connection settings or merely viewing the settings page does not contact Resend. When an administrator sends a direct test, or when Resend is active and WordPress calls <code>wp_mail()<\/code>, the site sends the API key in a Bearer authorization header and the complete email to the fixed <code>https:\/\/api.resend.com\/emails<\/code> endpoint. Email data can include the sender, recipients, CC\/BCC recipients, reply-to addresses, subject, custom headers, plain-text or HTML body, and attachments supplied to <code>wp_mail()<\/code>. The connection is direct and does not pass through TechWizard. The adapter conservatively permits at most 50 combined recipients and 28 MB of raw attachments so that Base64-encoded attachments remain below Resend's 40 MB limit. An HTTP 200 response with a message ID means Resend accepted the request; it does not prove final delivery. Without a verified domain, Resend limits testing to the account owner's email address.<\/p>\n\n<p>Resend Privacy Policy: https:\/\/resend.com\/legal\/privacy-policy<\/p>\n\n<p>Resend Terms of Service: https:\/\/resend.com\/legal\/terms-of-service<\/p><\/dd>\n<dt id=\"smtp2go%20email%20api\"><h3>SMTP2GO Email API<\/h3><\/dt>\n<dd><p>The SMTP2GO setup guide is for an SMTP2GO account owned and controlled by the site administrator. It explains how to verify a Sender domain or Single sender email and how to create a 36-character <code>api-<\/code>-prefixed API key restricted to the <code>\/email\/send<\/code> permission. The full key must be obtained with the Copy action in the API Keys list; the value masked with x characters on screen must not be copied manually. A verified Sender domain with the SPF and DKIM records supplied by SMTP2GO is recommended. An SMTP2GO account is required; SMTP2GO plan, account, verified-sender, regional, recipient, message-size, quota, and sending limits and terms apply.<\/p>\n\n<p>Saving the connection settings or merely viewing the settings page does not contact SMTP2GO. When an administrator sends a direct test, or when SMTP2GO is active and WordPress calls <code>wp_mail()<\/code>, the site sends the API key in the <code>X-Smtp2go-Api-Key<\/code> header and the complete email to exactly one administrator-selected endpoint: <code>https:\/\/api.smtp2go.com\/v3\/email\/send<\/code>, <code>https:\/\/eu-api.smtp2go.com\/v3\/email\/send<\/code>, <code>https:\/\/us-api.smtp2go.com\/v3\/email\/send<\/code>, or <code>https:\/\/au-api.smtp2go.com\/v3\/email\/send<\/code>. Email data can include the sender, recipients, CC\/BCC recipients, reply-to addresses, subject, custom headers, plain-text or HTML body, and attachments supplied to <code>wp_mail()<\/code>. The connection is direct and does not pass through TechWizard. The adapter permits at most 100 combined recipients and conservatively limits raw attachments to 34 MB while bounding the encoded JSON request to 50 MB. A successful API response with an email ID means SMTP2GO accepted the request; it does not prove final delivery.<\/p>\n\n<p>SMTP2GO Privacy Policy: https:\/\/www.smtp2go.com\/privacy\/<\/p>\n\n<p>SMTP2GO Terms of Service: https:\/\/www.smtp2go.com\/terms\/<\/p><\/dd>\n<dt id=\"amazon%20ses%20v2%20sendemail%20api\"><h3>Amazon SES v2 SendEmail API<\/h3><\/dt>\n<dd><p>The Amazon SES setup guide is for an AWS account owned and controlled by the site administrator. It requires a verified SES domain or email identity in the selected AWS Region and a dedicated IAM user without console access. Because the adapter submits Raw MIME through the SES v2 <code>SendEmail<\/code> endpoint, the IAM policy must permit only <code>ses:SendEmail<\/code> and <code>ses:SendRawEmail<\/code> and should be scoped to the verified SES identity; an AWS root access key or AdministratorAccess must not be used. The IAM user's Access key ID and Secret access key are stored together in a separate non-autoloaded, write-only database option. An AWS account is required; AWS Region, identity, sandbox or production access, sending-rate, daily-quota, recipient, message-size, billing, and service terms apply. While an SES account is in the sandbox, recipients must also be verified or use the mailbox simulator.<\/p>\n\n<p>Saving the connection settings or merely viewing the settings page does not contact AWS. When an administrator sends a direct test, or when Amazon SES is active and WordPress calls <code>wp_mail()<\/code>, the site signs the request with AWS Signature Version 4 and sends it directly to the selected allowlisted commercial AWS Region at <code>https:\/\/email.{region}.amazonaws.com\/v2\/email\/outbound-emails<\/code>. Email data can include the sender, To\/CC\/BCC recipients, reply-to addresses, subject, custom headers, complete plain-text or HTML MIME content, and attachments supplied to <code>wp_mail()<\/code>. The connection does not pass through TechWizard. The adapter permits at most 50 combined recipients, conservatively limits raw attachments to 28 MB, and limits the complete MIME message to 40 MB. A successful response containing a MessageId means SES accepted the request; it does not prove final delivery.<\/p>\n\n<p>AWS Privacy Notice: https:\/\/aws.amazon.com\/privacy\/<\/p>\n\n<p>AWS Service Terms: https:\/\/aws.amazon.com\/service-terms\/<\/p><\/dd>\n<dt id=\"microsoft%20identity%20platform%20and%20microsoft%20graph%20sendmail\"><h3>Microsoft identity platform and Microsoft Graph sendMail<\/h3><\/dt>\n<dd><p>The Microsoft setup guide is for a Microsoft account, mailbox, and Entra Web application owned and controlled by the site administrator. Creating the application requires an Entra tenant and sufficient application-developer permission; according to Microsoft's current registration prerequisites, a personal Microsoft account that is not associated with a directory may first need Azure registration or an eligible Microsoft 365 developer tenant. The plugin cannot create or bypass that Microsoft prerequisite. The application may support Microsoft 365 work accounts, personal Outlook.com accounts, or a single organization. It must register the exact callback URL shown by the plugin as a Web redirect URI and grant only delegated <code>Mail.Send<\/code>; the plugin also requests <code>offline_access<\/code> so WordPress can send later. The Application (client) ID is public configuration. The Client Secret Value and Refresh Token are stored in a separate non-autoloaded, write-only database option. Do not enter the Secret ID. A Microsoft account and an eligible Exchange Online or Outlook.com mailbox are required; tenant policy, mailbox, consent, message-size, recipient, throttling, sending, and service limits and terms apply. Registration prerequisites: https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/quickstart-register-app<\/p>\n\n<p>Saving settings or merely viewing the settings page does not contact Microsoft. When an administrator clicks Connect, the browser opens <code>https:\/\/login.microsoftonline.com\/{tenant}\/oauth2\/v2.0\/authorize<\/code> with the Application ID, exact callback URL, requested scope, PKCE challenge, and single-use state. After consent, and again before each send, the site posts the required authorization-code or refresh-token data directly to <code>https:\/\/login.microsoftonline.com\/{tenant}\/oauth2\/v2.0\/token<\/code>. When an administrator sends a direct test, or when Microsoft Graph is active and WordPress calls <code>wp_mail()<\/code>, the site sends the complete Base64-encoded MIME email directly to <code>https:\/\/graph.microsoft.com\/v1.0\/me\/sendMail<\/code>. The email can contain the sender, To\/CC\/BCC recipients, reply-to addresses, subject, safe custom headers, plain-text or HTML body, and attachments supplied to <code>wp_mail()<\/code>. The conservative limits are 2.9 MB for MIME source, 3.9 MB for the encoded request, and 2 MB of raw attachment source. A 202 Accepted response means Microsoft accepted the request; it does not prove final delivery. Disconnecting deletes the local Refresh Token; consent can be revoked separately in Microsoft My Apps. No Microsoft credential, token, or email passes through TechWizard.<\/p>\n\n<p>Microsoft Privacy Statement: https:\/\/privacy.microsoft.com\/privacystatement<\/p>\n\n<p>Microsoft Services Agreement: https:\/\/www.microsoft.com\/servicesagreement<\/p><\/dd>\n<dt id=\"mailersend%20email%20api\"><h3>MailerSend Email API<\/h3><\/dt>\n<dd><p>The MailerSend setup guide is for a MailerSend account and sending domain owned and controlled by the site administrator. Add the domain under Email \u2192 Domains and publish the SPF, DKIM, and Return-Path DNS records until it is Verified. Under Integrations \u2192 MailerSend API, create a custom-permission token with Email set to Full access and every other permission set to No access; select the relevant verified domain. MailerSend may default a token without an explicit expiration to 24 hours, so choose, record, and rotate an appropriate expiration for production. The token is displayed by the provider only at creation and is stored by the plugin in a separate non-autoloaded, write-only database option.<\/p>\n\n<p>Saving settings or merely viewing the settings page does not contact MailerSend. A direct test, or an active <code>wp_mail()<\/code> call, sends the sender, To\/CC\/BCC and Reply-To recipients, subject, plain-text or HTML body, and supported attachments directly to <code>https:\/\/api.mailersend.com\/v1\/email<\/code>. No token or email passes through TechWizard. The adapter accepts at most 50 To, 10 CC, and 10 BCC recipients, one Reply-To address, 2 MB per text or HTML body part, and 25 MB of raw attachment source with extensions supported by MailerSend. Arbitrary custom email headers are not forwarded because MailerSend makes that feature plan-dependent; Reply-To remains supported. Only HTTP 202 with a non-empty <code>X-Message-Id<\/code> and without <code>X-Send-Paused: true<\/code> confirms API acceptance, not final delivery.<\/p>\n\n<p>MailerSend Privacy Policy: https:\/\/www.mailersend.com\/legal\/privacy-policy<\/p>\n\n<p>MailerSend Terms of Use: https:\/\/www.mailersend.com\/legal\/terms-of-use<\/p>\n\n<p>MailerSend Data Processing Addendum: https:\/\/www.mailersend.com\/legal\/data-processing-addendum<\/p><\/dd>\n<dt id=\"mailjet%20send%20api%20v3.1\"><h3>Mailjet Send API v3.1<\/h3><\/dt>\n<dd><p>The Mailjet setup guide is for a Mailjet account, API key pair, and verified sender or sending domain owned and controlled by the site administrator. The administrator should authenticate the full sending domain and publish the SPF and DKIM records supplied by Mailjet for production use. The Mailjet API Key and Secret Key must belong to the same account\/API-key entry. Both credentials are stored together in a separate non-autoloaded, write-only database option; neither is displayed after saving. A Mailjet account is required, and Mailjet plan, test-mode, account, sender, recipient, rate, quota, attachment, and message-size limits and terms apply.<\/p>\n\n<p>Saving settings or merely viewing the settings page does not contact Mailjet. A direct test, or an active <code>wp_mail()<\/code> call, sends the API Key and Secret Key in an HTTP Basic authorization header and sends the complete email directly to <code>https:\/\/api.mailjet.com\/v3.1\/send<\/code>. Email data can include the sender, To\/CC\/BCC and Reply-To recipients, subject, safe custom headers, plain-text or HTML body, and attachments supplied to <code>wp_mail()<\/code>. No credential or email passes through TechWizard. The adapter permits at most 50 combined recipients, one Reply-To address, 2 MB per body part, 20 attachments, and 10 MB total raw attachment source while bounding the JSON request to 20 MB. Only HTTP 200 with one <code>success<\/code> message and matching recipient MessageUUID\/MessageID values confirms API acceptance, not final delivery.<\/p>\n\n<p>Mailjet Privacy Policy: https:\/\/www.mailjet.com\/legal\/privacy-policy\/<\/p>\n\n<p>Mailjet Terms of Use: https:\/\/www.mailjet.com\/legal\/terms\/<\/p><\/dd>\n<dt id=\"elastic%20email%20rest%20api%20v4\"><h3>Elastic Email REST API v4<\/h3><\/dt>\n<dd><p>The Elastic Email setup guide is for an Elastic Email account, API key, and verified sender or sending domain owned and controlled by the site administrator. For production use, the administrator should verify the full domain and publish the SPF and DKIM records supplied by Elastic Email. Create a dedicated API key with only the <code>SendHttp<\/code> access level; use an IP restriction only when the WordPress server has a stable, known outbound IP. The API key is stored in a separate non-autoloaded, write-only database option and is never displayed after saving. An Elastic Email account is required, and its plan, account, sender, recipient, rate, quota, attachment, and message-size limits and terms apply.<\/p>\n\n<p>Saving settings or merely viewing the settings page does not contact Elastic Email. A direct test, or an active <code>wp_mail()<\/code> call, sends the API key in the <code>X-ElasticEmail-ApiKey<\/code> header and sends the complete email directly to <code>https:\/\/api.elasticemail.com\/v4\/emails\/transactional<\/code>. Email data can include the sender, To\/CC\/BCC and Reply-To recipients, subject, safe custom headers, plain-text or HTML body, and attachments supplied to <code>wp_mail()<\/code>. No credential or email passes through TechWizard. The adapter permits at most 50 combined recipients, one Reply-To address, 2 MB per body part, 20 attachments, and 10 MB total raw attachment source while bounding the JSON request to 20 MB. Only HTTP 200 with non-empty TransactionID and MessageID values confirms API acceptance, not final delivery.<\/p>\n\n<p>Elastic Email Privacy Policy: https:\/\/elasticemail.com\/resources\/usage-policies\/privacy-policy<\/p>\n\n<p>Elastic Email Terms of Use: https:\/\/elasticemail.com\/resources\/usage-policies\/terms-of-use<\/p><\/dd>\n<dt id=\"bird%20email%20api\"><h3>Bird Email API<\/h3><\/dt>\n<dd><p>The Bird setup guide is for a Bird account, regional <code>bk_eu1_...<\/code> or <code>bk_us1_...<\/code> API key, and verified sending domain owned and controlled by the site administrator. Create a dedicated key for the WordPress site in Email onboarding or Developers &gt; API keys. Verify a sending domain with the DNS records supplied by Bird before production delivery; the shared onboarding sender is limited to onboarding and sandbox use. The key is stored in a separate non-autoloaded, write-only database option and is never displayed after saving. A Bird account is required, and its region, plan, account, domain, recipient, rate, quota, attachment, message-size, and compliance limits and terms apply.<\/p>\n\n<p>Saving settings or merely viewing the settings page does not contact Bird. A direct test, or an active <code>wp_mail()<\/code> call, sends the API key as a Bearer credential and sends the complete email directly to exactly one selected endpoint: <code>https:\/\/eu1.platform.bird.com\/v1\/email\/messages<\/code> or <code>https:\/\/us1.platform.bird.com\/v1\/email\/messages<\/code>. Email data can include the sender, To\/CC\/BCC and Reply-To recipients, subject, safe custom headers, plain-text or HTML body, and attachments supplied to <code>wp_mail()<\/code>. No credential or email passes through TechWizard. The adapter uses the transactional category, disables open and click tracking, permits at most 50 combined recipients, 25 Reply-To addresses, 2 MB per body part, 20 attachments, and 10 MB total raw attachment source while bounding the JSON request to 20 MB. Only HTTP 202 with zero rejected recipients, the exact requested accepted-recipient count, and a bounded <code>em_<\/code> message ID confirms API acceptance, not final delivery.<\/p>\n\n<p>Bird Privacy Policy: https:\/\/bird.com\/en-us\/legal\/privacy<\/p>\n\n<p>Bird Terms of Use: https:\/\/bird.com\/en-us\/legal\/terms<\/p><\/dd>\n<dt id=\"setup%20questions\"><h3>Setup questions<\/h3><\/dt>\n<dd><\/dd>\n<dt id=\"can%20i%20migrate%20settings%20from%20another%20smtp%20plugin%3F\"><h3>Can I migrate settings from another SMTP plugin?<\/h3><\/dt>\n<dd><p>Yes. The migration tool can read supported public settings from WP Mail SMTP Other SMTP, Easy WP SMTP 2.x Other SMTP, or the primary SMTP connection in Post SMTP 3.x. It runs only after an administrator submits the nonce-protected form, does not contact an external service, does not modify the source plugin, never copies passwords, OAuth tokens, API keys, fallback routes, forced recipients, or custom headers, and leaves the imported route disabled until it is reviewed and completed.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20google%20api%20key%20for%20gmail%3F\"><h3>Do I need a Google API key for Gmail?<\/h3><\/dt>\n<dd><p>No. The Gmail connection uses an OAuth 2.0 Web application Client ID and Client Secret created in a Google Cloud project owned by the site administrator. The Gmail API tab contains a current, step-by-step setup guide, the exact redirect URI for the site, links to the relevant Google Cloud pages, and troubleshooting for common OAuth errors. The connection does not pass through TechWizard.<\/p><\/dd>\n<dt id=\"why%20does%20a%20gmail%20connection%20stop%20after%20seven%20days%3F\"><h3>Why does a Gmail connection stop after seven days?<\/h3><\/dt>\n<dd><p>Google may expire offline authorization and the Refresh Token after seven days while an External OAuth app remains in Testing status. Review the project's Audience setting and Google's current publishing and verification requirements before production use.<\/p><\/dd>\n<dt id=\"where%20do%20i%20get%20the%20brevo%20smtp%20key%3F\"><h3>Where do I get the Brevo SMTP key?<\/h3><\/dt>\n<dd><p>Open the Brevo tab in TechWizard Mail SMTP. It provides a step-by-step guide with direct links to sender verification, domain authentication, and the Brevo SMTP key page, followed by the exact host, port, encryption, and authentication settings. Use a dedicated SMTP key, not a Brevo API key or your account password.<\/p><\/dd>\n<dt id=\"where%20do%20i%20get%20the%20brevo%20api%20key%3F\"><h3>Where do I get the Brevo API key?<\/h3><\/dt>\n<dd><p>Open the Brevo tab and follow the direct API guide. Create a dedicated v3 API key in your own Brevo account, paste it into the write-only field, save, and send a direct API test before activating the route. Use an API key for this route, not an SMTP key or your account password.<\/p><\/dd>\n<dt id=\"where%20do%20i%20get%20the%20sendgrid%20api%20key%3F\"><h3>Where do I get the SendGrid API key?<\/h3><\/dt>\n<dd><p>Open the SendGrid tab and follow the built-in setup guide. Create a Restricted Access key in your own SendGrid account, enable only Mail Send, paste the SG.-prefixed key into the write-only field, select the region that belongs to the account, and send a direct API test before activating the route.<\/p><\/dd>\n<dt id=\"how%20do%20i%20configure%20mailgun%3F\"><h3>How do I configure Mailgun?<\/h3><\/dt>\n<dd><p>Open the Mailgun tab and follow the built-in setup guide. In your own Mailgun account, add and authenticate a sending domain, note whether it is in the US or EU region, create a Domain Sending Key for that domain, then enter the same region, domain, verified sender, and write-only key in WordPress. Send a direct API test before activating the route.<\/p><\/dd>\n<dt id=\"how%20do%20i%20configure%20postmark%3F\"><h3>How do I configure Postmark?<\/h3><\/dt>\n<dd><p>Open the Postmark tab and follow the built-in setup guide. In your own Postmark account, verify a Sender Signature or sending domain, open the Server that will send WordPress email, and copy that Server's API token. Enter the verified sender and the write-only Server API token in WordPress, save, and send a direct API test before activating the route. Do not use an Account API token or SMTP token.<\/p><\/dd>\n<dt id=\"how%20do%20i%20configure%20resend%3F\"><h3>How do I configure Resend?<\/h3><\/dt>\n<dd><p>Open the Resend tab and follow the built-in setup guide. In your own Resend account, add a sending domain, publish the supplied SPF and DKIM records, and wait for Verified status. Create a Sending access API key, preferably restricted to that domain, copy the one-time <code>re_<\/code>-prefixed value into the write-only field, enter a sender at the verified domain, save, and send a direct API test before activating the route.<\/p><\/dd>\n<dt id=\"how%20do%20i%20configure%20smtp2go%3F\"><h3>How do I configure SMTP2GO?<\/h3><\/dt>\n<dd><p>Open the SMTP2GO tab and follow the built-in setup guide. In your own SMTP2GO account, verify a Sender domain or Single sender email and create an API key with only <code>\/email\/send<\/code> permission. In the API Keys list, use the Copy action to obtain the complete 36-character <code>api-<\/code>-prefixed key; do not manually copy the value masked with x characters. Paste it into the write-only field, select the region that belongs to your account, enter the verified sender, save, and send a direct API test before activating the route.<\/p><\/dd>\n<dt id=\"how%20do%20i%20configure%20amazon%20ses%3F\"><h3>How do I configure Amazon SES?<\/h3><\/dt>\n<dd><p>Open the Amazon SES tab and follow the built-in setup guide. In your own AWS account, choose one Region, verify a domain with Easy DKIM or verify one email address, and check whether that Region is still in the SES sandbox. Create a dedicated IAM user without console access, attach a policy that grants only <code>ses:SendEmail<\/code> and <code>ses:SendRawEmail<\/code> for the verified identity ARN, then create an Access key for an application running outside AWS. Paste the one-time Secret access key together with its Access key ID into the write-only fields, select the same Region, enter the verified sender, save, and send a direct API test before activating the route. Do not use root credentials or AdministratorAccess.<\/p><\/dd>\n<dt id=\"how%20do%20i%20configure%20microsoft%20365%20or%20outlook%3F\"><h3>How do I configure Microsoft 365 or Outlook?<\/h3><\/dt>\n<dd><p>Open the Microsoft 365 tab and follow the built-in setup guide. You need an Entra tenant and permission to register applications. If a personal Microsoft account is not associated with a directory and Entra offers only Azure registration or the Microsoft 365 Developer Program, complete one of Microsoft's eligible tenant paths first or ask the administrator of an existing organization; the plugin cannot do this for you. In your own tenant, register an Entra application, select the account type you need, add the exact callback URL as a Web redirect URI, copy the Application (client) ID, create and copy a Client Secret Value, and add only delegated Microsoft Graph <code>Mail.Send<\/code>. Keep Tenant set to <code>common<\/code> for a multitenant application that includes personal Microsoft accounts, or enter the Directory (tenant) ID for a single-tenant application. Save the settings, connect the mailbox, approve the mail-sending permission, send a direct test, and only then activate Microsoft Graph.<\/p><\/dd>\n<dt id=\"how%20do%20i%20configure%20mailersend%3F\"><h3>How do I configure MailerSend?<\/h3><\/dt>\n<dd><p>Open the MailerSend tab and follow the built-in guide. In your own MailerSend account, add and fully verify a sending domain, then create a custom-permission API token with only Email set to Full access. Set and record an appropriate token expiration, copy the full token immediately, paste it into the write-only field, enter a sender address on the verified domain, save, and send a direct API test. Verify actual delivery in the recipient mailbox or MailerSend Activity before activating the route.<\/p><\/dd>\n<dt id=\"how%20do%20i%20configure%20mailjet%3F\"><h3>How do I configure Mailjet?<\/h3><\/dt>\n<dd><p>Open the Mailjet tab and follow the built-in guide. In your own Mailjet account, verify a sender or preferably the full sending domain with SPF and DKIM, open API Key Management, and copy the API Key and its matching Secret Key. Paste both one-time values into the write-only fields, enter a verified sender, save, and send a direct API test. Verify actual delivery in the recipient mailbox or Mailjet statistics before activating the route.<\/p><\/dd>\n<dt id=\"how%20do%20i%20configure%20elastic%20email%3F\"><h3>How do I configure Elastic Email?<\/h3><\/dt>\n<dd><p>Open the Elastic Email tab and follow the built-in guide. In your own account, verify the sending domain with SPF and DKIM, create a dedicated API key with only SendHttp permission, and copy the full key immediately. Paste it into the write-only field, enter a verified sender, save, and send a direct API test. Verify actual delivery in the recipient mailbox or Elastic Email Activity before activating the route.<\/p><\/dd>\n<dt id=\"how%20do%20i%20configure%20bird%3F\"><h3>How do I configure Bird?<\/h3><\/dt>\n<dd><p>Open the Bird tab and follow the built-in guide. Create a dedicated API key in Bird Email onboarding or Developers &gt; API keys, select EU or US to match its <code>bk_eu1_<\/code> or <code>bk_us1_<\/code> prefix, and copy the full one-time key into the write-only field. For production, verify your own sending domain with Bird's DNS records, enter a sender on that domain, save, and send a direct API test. Verify actual delivery in the recipient mailbox or Bird Email log before activating the route.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Let WordPress initialize PHPMailer before API transport replacement, eliminating direct loading of WordPress core mailer files while preserving recipients, headers, and attachments.<\/li>\n<li>Added direct nonce verification to every state-changing administration handler and changed request processing to validate and sanitize individual fields instead of whole request arrays.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Normalized and sanitized every state-changing administration action and nonce before explicit verification, while retaining capability checks before request processing.<\/li>\n<li>Corrected the Postmark external-service disclosure to link directly to Postmark's Privacy Policy and Terms of Service.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release with custom SMTP and thirteen direct API mailers: Gmail, Brevo, SendGrid, Mailgun, Postmark, Resend, SMTP2GO, Amazon SES, Microsoft Graph, MailerSend, Mailjet, Elastic Email, and Bird.<\/li>\n<li>Added sender policies, direct provider tests, failure-only diagnostics, conflict detection, manual DNS checks, secret-free configuration transfer, and safe migration from WP Mail SMTP, Easy WP SMTP, and Post SMTP.<\/li>\n<li>Credentials remain write-only in non-autoloaded WordPress database options; every connection uses the administrator's own provider account without a TechWizard mail or credential relay.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Added a direct Bird Email API transport with user-owned EU1\/US1 credentials, a verified-domain guide, tracking disabled by default, idempotent requests, strict recipient acceptance checks, bounded attachments, and exclusive route activation.<\/li>\n<li>Added Bird to the Pro routing and fallback allowlist without placing Pro runtime in the Free package.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Added a direct Elastic Email REST API v4 transport with a user-owned, write-only, SendHttp-only API key, verified-domain guide, strict acceptance checks, bounded attachments, and exclusive route activation.<\/li>\n<li>Added Mailjet and Elastic Email to the Pro routing connection allowlist without placing Pro runtime in the Free package.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Added a direct Mailjet Send API v3.1 transport with a user-owned write-only API Key and Secret Key, verified-domain guide, strict recipient-level acceptance checks, bounded attachments, and exclusive route activation.<\/li>\n<li>Replaced route-count-specific help text with wording that remains accurate as providers are added.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added a versioned, secret-free connection catalog and request-scoped transport execution API for compatible extensions.<\/li>\n<li>Added stable Gmail API failure categories for safe routing and diagnostics.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Added a versioned, privacy-safe Core API bridge for Pro delivery auditing.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Added the compatible core and administration scaffold.<\/li>\n<li>Added one primary SMTP connection and sender policies.<\/li>\n<li>Added plain-text and HTML test emails.<\/li>\n<li>Added configurable, failure-only diagnostics.<\/li>\n<li>Added local detection for known active SMTP plugins.<\/li>\n<li>Added administrator-initiated SPF, DMARC, and optional DKIM public DNS status checks.<\/li>\n<li>Added exact-schema JSON export\/import without SMTP passwords.<\/li>\n<li>Added a fail-safe WP Mail SMTP Other SMTP public-settings migration adapter without password transfer.<\/li>\n<li>Added a fail-safe Easy WP SMTP 2.x Other SMTP public-settings migration adapter without password transfer or source modification.<\/li>\n<li>Added a fail-safe Post SMTP 3.x primary SMTP public-settings migration adapter without credential, fallback, or forced-recipient transfer.<\/li>\n<li>Added a manual Google OAuth Gmail API transport using only the gmail.send scope.<\/li>\n<li>Added an in-product, step-by-step Google Cloud setup guide with the exact site callback URL and common OAuth troubleshooting.<\/li>\n<li>Added an in-product, step-by-step Brevo SMTP setup guide with sender, domain, credential, and troubleshooting instructions.<\/li>\n<li>Added a direct Brevo transactional API transport with a user-owned, write-only v3 API key, beginner setup guide, direct test, attachments, and exclusive route activation.<\/li>\n<li>Added a direct SendGrid Mail Send API transport with a user-owned, restricted write-only API key, fixed global\/EU endpoints, beginner setup guide, direct test, attachments, and exclusive route activation.<\/li>\n<li>Added a direct Mailgun MIME Messages API transport with a user-owned sending domain, write-only Domain Sending Key, fixed US\/EU endpoints, beginner setup guide, direct test, MIME attachments, and exclusive route activation.<\/li>\n<li>Added a direct Postmark Email API transport with a user-owned, write-only Server API token, fixed endpoint, beginner setup guide, direct test, attachments, provider limits, and exclusive route activation.<\/li>\n<li>Added a direct Resend Email API transport with a user-owned, write-only Sending access API key, fixed endpoint, beginner domain and key setup guide, direct test, attachments, provider limits, and exclusive route activation.<\/li>\n<li>Added a direct SMTP2GO Email API transport with a user-owned, least-privilege write-only API key, fixed global\/EU\/US\/AU endpoint allowlist, beginner sender and key setup guide, direct test, attachments, provider limits, and exclusive route activation.<\/li>\n<li>Added a direct Amazon SES v2 SendEmail transport with user-owned write-only IAM credentials, AWS SigV4 signing, a 27-Region endpoint allowlist, least-privilege IAM and sandbox guidance, raw MIME attachments, provider limits, and exclusive route activation.<\/li>\n<li>Added a direct Microsoft Graph sendMail transport with a user-owned Entra Web application, PKCE-protected OAuth, delegated Mail.Send only, write-only local secrets, raw MIME attachments, beginner setup guidance, and exclusive route activation.<\/li>\n<li>Added a direct MailerSend Email API transport with a user-owned least-privilege write-only token, verified-domain guide, fixed endpoint, strict acceptance checks, supported attachments, provider limits, and exclusive route activation.<\/li>\n<li>Added complete bundled English (United States) and Hungarian PO\/MO catalogs.<\/li>\n<li>Added secret-free SMTP authentication, connection, timeout, TLS, sender, recipient, and message-rejection diagnostic categories.<\/li>\n<\/ul>","raw_excerpt":"Configure and diagnose reliable WordPress email delivery through SMTP and transactional mail services.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/358439","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=358439"}],"author":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/techwizardkft"}],"wp:attachment":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=358439"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=358439"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=358439"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=358439"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=358439"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=358439"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}