{"id":356648,"date":"2026-08-25T12:57:48","date_gmt":"2026-08-25T12:57:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/flex-smtp\/"},"modified":"2026-08-25T12:57:28","modified_gmt":"2026-08-25T12:57:28","slug":"flex-smtp","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/flex-smtp\/","author":23082855,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Flex SMTP","header_author":"FLEX","header_description":"Send WordPress mail through SMTP or a provider HTTP API, with a test send and delivery log.","assets_banners_color":"fdfdfe","last_updated":"2026-08-25 12:57:28","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/flexible.am\/","header_plugin_uri":"","header_author_uri":"https:\/\/flexible.am\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":36,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"flexfields","date":"2026-08-25 12:57:28"}},"upgrade_notice":{"1.0.1":"<p>Documentation only. Existing settings are unchanged.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3665345,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3665345,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3665345,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3665345,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3665345,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3665345,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Settings \u2014 provider, SMTP or HTTP API, From address, and logging","2":"Test email \u2014 status, provider, and a one-click send","3":"Email Log \u2014 searchable delivery results","4":"Usage \u2014 setup, providers, and troubleshooting"}},"plugin_section":[],"plugin_tags":[267,450,6932,6696,41812],"plugin_category":[41],"plugin_contributors":[240619,232306],"plugin_business_model":[],"class_list":["post-356648","plugin","type-plugin","status-publish","hentry","plugin_tags-email","plugin_tags-mail","plugin_tags-phpmailer","plugin_tags-smtp","plugin_tags-wp-mail","plugin_category-communication","plugin_contributors-flexfields","plugin_contributors-hovoqoch","plugin_committers-flexfields"],"banners":{"banner":"https:\/\/ps.w.org\/flex-smtp\/assets\/banner-772x250.png?rev=3665345","banner_2x":"https:\/\/ps.w.org\/flex-smtp\/assets\/banner-1544x500.png?rev=3665345","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/flex-smtp\/assets\/icon-128x128.png?rev=3665345","icon_2x":"https:\/\/ps.w.org\/flex-smtp\/assets\/icon-256x256.png?rev=3665345","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Flex SMTP<\/strong> is the mail layer for the FLEX plugin suite. Flex Forms (and anything else that calls <code>wp_mail()<\/code>) can leave SMTP credentials out of form settings. This plugin owns delivery: provider presets, SMTP or HTTP API, a test send, and a searchable log.<\/p>\n\n<p>It is built for sites that already use FLEX plugins, and for hosts that block outbound SMTP ports 465\/587. HTTP API sending uses WordPress <code>wp_remote_post<\/code> only \u2014 no vendor SDKs are bundled.<\/p>\n\n<ul>\n<li>Provider presets (Gmail, Microsoft 365, SendGrid, Mailgun, Amazon SES, and more)<\/li>\n<li>SMTP for every provider, or HTTP API for transactional services<\/li>\n<li>From email \/ name, default From replacement, and optional Force From<\/li>\n<li>One-click test email<\/li>\n<li>Searchable delivery log with retention<\/li>\n<li>Copies old Flex Forms SMTP options on first activate<\/li>\n<\/ul>\n\n<p>Enable is off by default. Mail stays on the WordPress default mailer until you save a provider and turn Enable on.<\/p>\n\n<p>CSS and JavaScript are loaded from this plugin only. There is no telemetry and no remote update checker.<\/p>\n\n<h4>Privacy<\/h4>\n\n<p>SMTP usernames, passwords, and API keys are stored in your WordPress database (leave a secret field blank when saving to keep the stored value). The optional email log stores recipient, subject, success\/fail, and error text. Only administrators can view the log or settings.<\/p>\n\n<p>When Enable is on, message content is sent to the SMTP host or HTTP API you configured. Flex SMTP does not send mail to any other remote service. See <strong>External services<\/strong>.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to a third-party mail service only after an administrator chooses that provider, saves credentials, and turns <strong>Enable<\/strong> on (or clicks Send test). Until then, WordPress uses the default mailer. The plugin does not phone home.<\/p>\n\n<p><strong>What data is sent (every provider):<\/strong> From, To, Cc, Bcc, Reply-To, subject, body, and attachments from <code>wp_mail()<\/code>. SMTP also sends the saved username and password. HTTP API also sends the saved API key, and the secret, domain, or region when that provider requires them.<\/p>\n\n<p><strong>When data is sent:<\/strong> On each <code>wp_mail()<\/code> call while Enable is on, and when an administrator sends a test email.<\/p>\n\n<p><strong>Why:<\/strong> To deliver WordPress mail (password resets, form notifications, WooCommerce, and so on) through the account you already have with that provider.<\/p>\n\n<h4>Amazon SES<\/h4>\n\n<p>Amazon Simple Email Service delivers mail when <strong>Amazon SES<\/strong> is selected. SMTP connects to <code>email-smtp.{region}.amazonaws.com<\/code> (for example <code>email-smtp.us-east-1.amazonaws.com<\/code>). HTTP API posts SendRawEmail to <code>email.{region}.amazonaws.com<\/code>. The region is the one you pick in settings.<\/p>\n\n<p>Service: <a href=\"https:\/\/aws.amazon.com\/ses\/\">Amazon SES<\/a>\n<a href=\"https:\/\/aws.amazon.com\/service-terms\/\">Terms of Service<\/a>\n<a href=\"https:\/\/aws.amazon.com\/privacy\/\">Privacy Policy<\/a><\/p>\n\n<h4>Gmail \/ Google Workspace<\/h4>\n\n<p>Sends mail through Google SMTP (<code>smtp.gmail.com<\/code>) when that provider is selected. Uses an app password (OAuth is not included).<\/p>\n\n<p>Service: <a href=\"https:\/\/mail.google.com\/\">Gmail<\/a>\n<a href=\"https:\/\/policies.google.com\/terms\">Terms of Service<\/a>\n<a href=\"https:\/\/policies.google.com\/privacy\">Privacy Policy<\/a><\/p>\n\n<h4>Microsoft 365 \/ Outlook<\/h4>\n\n<p>Sends mail through Microsoft SMTP (<code>smtp.office365.com<\/code>) when that provider is selected. Uses SMTP AUTH and, when required, an app password.<\/p>\n\n<p>Service: <a href=\"https:\/\/www.microsoft.com\/microsoft-365\">Microsoft 365<\/a>\n<a href=\"https:\/\/www.microsoft.com\/servicesagreement\">Terms of Service<\/a>\n<a href=\"https:\/\/privacy.microsoft.com\/privacystatement\">Privacy Policy<\/a><\/p>\n\n<h4>Yahoo Mail<\/h4>\n\n<p>Sends mail through Yahoo SMTP (<code>smtp.mail.yahoo.com<\/code>) when that provider is selected. Uses an app password.<\/p>\n\n<p>Service: <a href=\"https:\/\/mail.yahoo.com\/\">Yahoo Mail<\/a>\n<a href=\"https:\/\/legal.yahoo.com\/us\/en\/yahoo\/terms\/otos\/index.html\">Terms of Service<\/a>\n<a href=\"https:\/\/legal.yahoo.com\/us\/en\/yahoo\/privacy\/index.html\">Privacy Policy<\/a><\/p>\n\n<h4>Zoho Mail<\/h4>\n\n<p>Sends mail through Zoho SMTP (<code>smtp.zoho.com<\/code>) when that provider is selected.<\/p>\n\n<p>Service: <a href=\"https:\/\/www.zoho.com\/mail\/\">Zoho Mail<\/a>\n<a href=\"https:\/\/www.zoho.com\/terms.html\">Terms of Service<\/a>\n<a href=\"https:\/\/www.zoho.com\/privacy.html\">Privacy Policy<\/a><\/p>\n\n<h4>iCloud Mail<\/h4>\n\n<p>Sends mail through iCloud SMTP (<code>smtp.mail.me.com<\/code>) when that provider is selected. Uses an app-specific password.<\/p>\n\n<p>Service: <a href=\"https:\/\/www.icloud.com\/\">iCloud<\/a>\n<a href=\"https:\/\/www.apple.com\/legal\/internet-services\/icloud\/\">Terms of Service<\/a>\n<a href=\"https:\/\/www.apple.com\/legal\/privacy\/\">Privacy Policy<\/a><\/p>\n\n<h4>SendGrid<\/h4>\n\n<p>Sends mail through SendGrid SMTP (<code>smtp.sendgrid.net<\/code>) or the SendGrid HTTP API when that provider is selected.<\/p>\n\n<p>Service: <a href=\"https:\/\/sendgrid.com\/\">SendGrid<\/a>\n<a href=\"https:\/\/www.twilio.com\/en-us\/legal\/tos\">Terms of Service<\/a>\n<a href=\"https:\/\/www.twilio.com\/en-us\/legal\/privacy\">Privacy Policy<\/a><\/p>\n\n<h4>Mailgun<\/h4>\n\n<p>Sends mail through Mailgun SMTP (<code>smtp.mailgun.org<\/code> or <code>smtp.eu.mailgun.org<\/code>) or the Mailgun HTTP API (<code>api.mailgun.net<\/code> or <code>api.eu.mailgun.net<\/code>) when that provider is selected. HTTP API also sends the Mailgun sending domain you enter.<\/p>\n\n<p>Service: <a href=\"https:\/\/www.mailgun.com\/\">Mailgun<\/a>\n<a href=\"https:\/\/www.mailgun.com\/legal\/terms\/\">Terms of Service<\/a>\n<a href=\"https:\/\/www.mailgun.com\/legal\/privacy-policy\/\">Privacy Policy<\/a><\/p>\n\n<h4>Postmark<\/h4>\n\n<p>Sends mail through Postmark SMTP (<code>smtp.postmarkapp.com<\/code>) or the Postmark HTTP API when that provider is selected. The API key is the Postmark server token.<\/p>\n\n<p>Service: <a href=\"https:\/\/postmarkapp.com\/\">Postmark<\/a>\n<a href=\"https:\/\/postmarkapp.com\/terms-of-service\">Terms of Service<\/a>\n<a href=\"https:\/\/www.activecampaign.com\/legal\/privacy-policy\">Privacy Policy<\/a><\/p>\n\n<h4>Brevo<\/h4>\n\n<p>Sends mail through Brevo SMTP (<code>smtp-relay.brevo.com<\/code>) or the Brevo HTTP API when that provider is selected.<\/p>\n\n<p>Service: <a href=\"https:\/\/www.brevo.com\/\">Brevo<\/a>\n<a href=\"https:\/\/www.brevo.com\/legal\/termsofuse\/\">Terms of Service<\/a>\n<a href=\"https:\/\/www.brevo.com\/legal\/privacypolicy\/\">Privacy Policy<\/a><\/p>\n\n<h4>Mailjet<\/h4>\n\n<p>Sends mail through Mailjet SMTP (<code>in-v3.mailjet.com<\/code>) or the Mailjet HTTP API when that provider is selected. HTTP API also sends the Mailjet API secret.<\/p>\n\n<p>Service: <a href=\"https:\/\/www.mailjet.com\/\">Mailjet<\/a>\n<a href=\"https:\/\/www.mailjet.com\/legal\/terms\/\">Terms of Service<\/a>\n<a href=\"https:\/\/www.mailjet.com\/legal\/privacy-policy\/\">Privacy Policy<\/a><\/p>\n\n<h4>SparkPost<\/h4>\n\n<p>Sends mail through SparkPost SMTP (<code>smtp.sparkpostmail.com<\/code> or <code>smtp.eu.sparkpostmail.com<\/code>) or the SparkPost HTTP API when that provider is selected. SparkPost is a Bird service.<\/p>\n\n<p>Service: <a href=\"https:\/\/www.sparkpost.com\/\">SparkPost<\/a>\n<a href=\"https:\/\/bird.com\/legal\/terms\">Terms of Service<\/a>\n<a href=\"https:\/\/bird.com\/legal\/privacy\">Privacy Policy<\/a><\/p>\n\n<h4>SMTP2GO<\/h4>\n\n<p>Sends mail through SMTP2GO SMTP (<code>mail.smtp2go.com<\/code>) or the SMTP2GO HTTP API when that provider is selected.<\/p>\n\n<p>Service: <a href=\"https:\/\/www.smtp2go.com\/\">SMTP2GO<\/a>\n<a href=\"https:\/\/www.smtp2go.com\/terms\/\">Terms of Service<\/a>\n<a href=\"https:\/\/www.smtp2go.com\/privacy\/\">Privacy Policy<\/a><\/p>\n\n<h4>Resend<\/h4>\n\n<p>Sends mail through Resend SMTP (<code>smtp.resend.com<\/code>) or the Resend HTTP API when that provider is selected.<\/p>\n\n<p>Service: <a href=\"https:\/\/resend.com\/\">Resend<\/a>\n<a href=\"https:\/\/resend.com\/legal\/terms-of-service\">Terms of Service<\/a>\n<a href=\"https:\/\/resend.com\/legal\/privacy-policy\">Privacy Policy<\/a><\/p>\n\n<h4>Custom SMTP<\/h4>\n\n<p>Sends mail to the SMTP host you type in settings. That host\u2019s own terms and privacy policy apply. Flex SMTP does not choose or document a third party for Custom.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>flex-smtp<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the zip via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate <strong>Flex SMTP<\/strong>.<\/li>\n<li>Open <strong>Flex SMTP \u2192 Settings<\/strong>, choose a provider, enter credentials, set From email, enable routing, and save.<\/li>\n<li>Send a test email, then confirm the result under <strong>Email Log<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20replace%20the%20smtp%20settings%20that%20used%20to%20live%20in%20flex%20forms%3F\"><h3>Does this replace the SMTP settings that used to live in Flex Forms?<\/h3><\/dt>\n<dd><p>Yes. Flex Forms now calls <code>wp_mail()<\/code> only. Activate Flex SMTP once to copy the old Forms SMTP options, then manage delivery here.<\/p><\/dd>\n<dt id=\"does%20gmail%20or%20microsoft%20365%20use%20oauth%3F\"><h3>Does Gmail or Microsoft 365 use OAuth?<\/h3><\/dt>\n<dd><p>No. Those providers use SMTP with an app password (and SMTP AUTH enabled on Microsoft 365). OAuth is not included.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20smtp%20and%20http%20api%3F\"><h3>What is the difference between SMTP and HTTP API?<\/h3><\/dt>\n<dd><p>SMTP talks to the provider\u2019s mail server through PHPMailer. HTTP API posts the message with <code>wp_remote_post<\/code> and skips PHPMailer. Use HTTP API if outbound ports 465\/587 are blocked. Gmail, Microsoft 365, Yahoo, Zoho, iCloud, and Custom are SMTP only.<\/p><\/dd>\n<dt id=\"will%20mail%20still%20go%20through%20my%20web%20host%3F\"><h3>Will mail still go through my web host?<\/h3><\/dt>\n<dd><p>Not while Enable is on. Messages go to your SMTP host or the provider API. Turn Enable off to return to the default WordPress mailer.<\/p><\/dd>\n<dt id=\"what%20is%20stored%20in%20the%20email%20log%3F\"><h3>What is stored in the email log?<\/h3><\/dt>\n<dd><p>Recipient, subject, success or fail, error text, and time. It does not store API keys or passwords. Disable Email log if you do not want delivery history.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20uninstall%3F\"><h3>What happens when I uninstall?<\/h3><\/dt>\n<dd><p>Deleting the plugin removes settings, credentials, and the log table. Deactivating alone keeps your data.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Expand External services: each provider lists what is sent, when, why, and working terms\/privacy URLs.<\/li>\n<li>Replace 404 Zoho and Mailjet legal links. SparkPost now points to current Bird legal pages.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: SMTP and HTTP API providers, test email, delivery log, and Flex Forms migration.<\/li>\n<\/ul>","raw_excerpt":"Send WordPress mail through SMTP or a provider HTTP API, with a test send and delivery log.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/356648","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=356648"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/flexfields"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=356648"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=356648"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=356648"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=356648"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=356648"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=356648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}