{"id":386167,"date":"2026-10-13T06:35:48","date_gmt":"2026-10-13T06:35:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/onlinefotka-smtp-mail\/"},"modified":"2026-10-13T06:35:31","modified_gmt":"2026-10-13T06:35:31","slug":"onlinefotka-smtp-mail","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/onlinefotka-smtp-mail\/","author":23503486,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.3","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Onlinefotka SMTP Mail","header_author":"Onlinefotka","header_description":"Send all WordPress and WooCommerce emails through your own SMTP servers with backup connection, smart routing, email log, open\/click tracking, reports, alerts, email controls and background sending.","assets_banners_color":"789fc3","last_updated":"2026-10-13 06:35:31","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/www.paypal.com\/donate?business=info%40onlinefotka.sk&currency_code=EUR","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/onlinefotka-smtp-mail\/","header_author_uri":"https:\/\/onlinefotka.sk","rating":0,"author_block_rating":0,"active_installs":0,"downloads":78,"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":"onlinefotka","date":"2026-10-13 06:35:31","revision":3743035}},"upgrade_notice":{"1.0.1":"<p>Adds OAuth login for Google, Microsoft 365 and Zoho.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3743035,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3743035,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3743035,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3743035,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3743035,"resolution":"1","location":"assets","locale":"","width":1400,"height":1500},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3743035,"resolution":"2","location":"assets","locale":"","width":1400,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3743035,"resolution":"3","location":"assets","locale":"","width":1400,"height":1100},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3743035,"resolution":"4","location":"assets","locale":"","width":1400,"height":1400},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3743035,"resolution":"5","location":"assets","locale":"","width":1400,"height":1300},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3743035,"resolution":"6","location":"assets","locale":"","width":1400,"height":1300}},"screenshots":{"1":"Connections \u2013 SMTP with presets or OAuth login for Google, Microsoft 365 and Zoho","2":"Smart routing rules","3":"Email log with status, source, connection and tracking","4":"Email detail with safe preview, error advice and resend","5":"Reports \u2013 daily chart and statistics by plugin","6":"Tools \u2013 test email with SMTP conversation and domain check"}},"plugin_section":[262246],"plugin_tags":[267,26736,897,36368,6696],"plugin_category":[41],"plugin_contributors":[263926],"plugin_business_model":[],"class_list":["post-386167","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-email","plugin_tags-email-log","plugin_tags-gmail","plugin_tags-outlook","plugin_tags-smtp","plugin_category-communication","plugin_contributors-onlinefotka","plugin_committers-onlinefotka"],"banners":{"banner":"https:\/\/ps.w.org\/onlinefotka-smtp-mail\/assets\/banner-772x250.png?rev=3743035","banner_2x":"https:\/\/ps.w.org\/onlinefotka-smtp-mail\/assets\/banner-1544x500.png?rev=3743035","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/onlinefotka-smtp-mail\/assets\/icon-128x128.png?rev=3743035","icon_2x":"https:\/\/ps.w.org\/onlinefotka-smtp-mail\/assets\/icon-256x256.png?rev=3743035","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/onlinefotka-smtp-mail\/assets\/screenshot-1.png?rev=3743035","caption":"Connections \u2013 SMTP with presets or OAuth login for Google, Microsoft 365 and Zoho"},{"src":"https:\/\/ps.w.org\/onlinefotka-smtp-mail\/assets\/screenshot-2.png?rev=3743035","caption":"Smart routing rules"},{"src":"https:\/\/ps.w.org\/onlinefotka-smtp-mail\/assets\/screenshot-3.png?rev=3743035","caption":"Email log with status, source, connection and tracking"},{"src":"https:\/\/ps.w.org\/onlinefotka-smtp-mail\/assets\/screenshot-4.png?rev=3743035","caption":"Email detail with safe preview, error advice and resend"},{"src":"https:\/\/ps.w.org\/onlinefotka-smtp-mail\/assets\/screenshot-5.png?rev=3743035","caption":"Reports \u2013 daily chart and statistics by plugin"},{"src":"https:\/\/ps.w.org\/onlinefotka-smtp-mail\/assets\/screenshot-6.png?rev=3743035","caption":"Tools \u2013 test email with SMTP conversation and domain check"}],"raw_content":"<!--section=description-->\n<p><strong>Onlinefotka SMTP Mail<\/strong> sends every WordPress and WooCommerce email through your own SMTP server instead of the unreliable PHP <code>mail()<\/code> function \u2013 so order confirmations, invoices and password resets reach the inbox, not the spam folder.<\/p>\n\n<p>Everything is included for free \u2013 no \"Pro\" version, no license key.<\/p>\n\n<h3>Sending<\/h3>\n\n<ul>\n<li><strong>Any SMTP server<\/strong> \u2013 your hosting mailbox, Gmail \/ Google Workspace, Microsoft 365, Zoho, Seznam, Brevo, Mailgun, SendGrid, Postmark, Amazon SES, SMTP2GO\u2026<\/li>\n<li><strong>OAuth 2.0 login (no password stored)<\/strong> \u2013 <strong>Google \/ Gmail \/ Workspace<\/strong> (Gmail API), <strong>Microsoft 365 \/ Outlook.com<\/strong> (Microsoft Graph \u2013 no SMTP AUTH needed) and <strong>Zoho Mail<\/strong> (Zoho Mail API). You use your own app (client ID + secret), step-by-step setup guide included, tokens are stored encrypted and refreshed automatically<\/li>\n<li><strong>Presets<\/strong> fill in host, port and encryption with one click<\/li>\n<li><strong>Multiple connections<\/strong> (up to 10)<\/li>\n<li><strong>Backup connection<\/strong> \u2013 when the primary server fails (outage, wrong password, limit reached) the email is immediately sent through the backup connection<\/li>\n<li><strong>Smart routing<\/strong> \u2013 rules send selected emails through another connection, e.g. by subject, recipient, From address, custom header or the plugin that sent the email<\/li>\n<li><strong>From email and name<\/strong> \u2013 optionally forced for every email, Return-Path set automatically<\/li>\n<li><strong>Background sending<\/strong> \u2013 emails are queued and sent every minute with a limit per minute (respects hosting limits, faster checkout)<\/li>\n<li><strong>\"Do not send\" mode<\/strong> for staging copies \u2013 emails are only logged<\/li>\n<\/ul>\n\n<h3>Email log<\/h3>\n\n<ul>\n<li>Every email with status (sent \/ failed \/ blocked), recipient, subject, connection, error message and <strong>the plugin that sent it<\/strong><\/li>\n<li>Safe preview of the HTML content, headers and attachments<\/li>\n<li><strong>Resend<\/strong> to the original recipients or to another address, bulk resend<\/li>\n<li>Optional <strong>copies of attachments<\/strong> in a protected folder<\/li>\n<li>Filters (status, source, connection, date), search, <strong>CSV export<\/strong><\/li>\n<li>Automatic cleanup after a chosen number of days<\/li>\n<\/ul>\n\n<h3>Tracking &amp; reports<\/h3>\n\n<ul>\n<li><strong>Open and click tracking<\/strong> for HTML emails (signed redirect links \u2013 no open redirect)<\/li>\n<li><strong>Reports<\/strong> \u2013 daily chart, totals, open and click rate, statistics by plugin and by connection<\/li>\n<li><strong>Weekly summary email<\/strong><\/li>\n<li>Dashboard widget<\/li>\n<\/ul>\n\n<h3>Alerts<\/h3>\n\n<p>Get notified when an email cannot be sent: <strong>email, Slack, Discord, Telegram or a custom webhook<\/strong> (JSON). Alerts are throttled and sent in the background.<\/p>\n\n<h3>Email controls<\/h3>\n\n<p>Turn off WordPress system emails you do not need \u2013 comment notifications, new user emails, password \/ email change notifications, automatic update emails.<\/p>\n\n<h3>Tools<\/h3>\n\n<ul>\n<li><strong>Test email<\/strong> with the complete SMTP conversation (passwords hidden) and plain-language advice for common errors<\/li>\n<li><strong>Connection check<\/strong> \u2013 connect and log in without sending an email<\/li>\n<li><strong>Domain check<\/strong> \u2013 MX, SPF, DKIM and DMARC records with advice<\/li>\n<li><strong>Import from WP Mail SMTP<\/strong> including the password<\/li>\n<li><strong>wp-config.php constants<\/strong> \u2013 ideal for agencies managing many sites, passwords never stored in the database<\/li>\n<li><strong>WP-CLI<\/strong>: <code>wp ofsm test<\/code>, <code>wp ofsm queue<\/code>, <code>wp ofsm log<\/code>, <code>wp ofsm stats<\/code>, <code>wp ofsm resend<\/code>, <code>wp ofsm report<\/code><\/li>\n<\/ul>\n\n<h3>Security<\/h3>\n\n<ul>\n<li>Passwords are encrypted (libsodium) with a key derived from your wp-config.php salts \u2013 never stored next to the encrypted value<\/li>\n<li>Passwords are hidden in the SMTP conversation<\/li>\n<li>Capability checks and nonces on every action, all output escaped<\/li>\n<li>Email previews are rendered in a sandboxed iframe<\/li>\n<li>Stored attachments are protected from direct access and downloaded only by administrators<\/li>\n<li>CSV export is protected against formula injection<\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>The email log stores recipients and (optionally) the content of emails in your own database. Open and click tracking processes personal data \u2013 mention it in your privacy policy or keep it turned off. No data is sent to Onlinefotka or any third party; alerts are sent only to the channels you configure.<\/p>\n\n<h3>External services<\/h3>\n\n<p>The plugin connects to third-party services only when you configure them:<\/p>\n\n<ul>\n<li><strong>Google Gmail API and Google OAuth<\/strong> (accounts.google.com, oauth2.googleapis.com, gmail.googleapis.com) \u2013 used when a connection of the type \"Google\" is set up: to authorize your mailbox and to send each email (recipients, subject, content and attachments are sent to Google). <a href=\"https:\/\/policies.google.com\/terms\">Terms<\/a>, <a href=\"https:\/\/policies.google.com\/privacy\">Privacy<\/a><\/li>\n<li><strong>Microsoft identity platform and Microsoft Graph<\/strong> (login.microsoftonline.com, graph.microsoft.com) \u2013 used for connections of the type \"Microsoft 365 \/ Outlook\" to authorize the mailbox and send each email. <a href=\"https:\/\/www.microsoft.com\/servicesagreement\">Terms<\/a>, <a href=\"https:\/\/privacy.microsoft.com\/privacystatement\">Privacy<\/a><\/li>\n<li><strong>Zoho Accounts and Zoho Mail API<\/strong> (accounts.zoho.*, mail.zoho.*) \u2013 used for connections of the type \"Zoho Mail\" to authorize the mailbox and send each email (attachments are uploaded to Zoho). <a href=\"https:\/\/www.zoho.com\/terms.html\">Terms<\/a>, <a href=\"https:\/\/www.zoho.com\/privacy.html\">Privacy<\/a><\/li>\n<li><strong>Your SMTP server<\/strong> \u2013 for SMTP connections the emails are delivered to the SMTP server you enter.<\/li>\n<li><strong>Slack, Discord, Telegram or your own webhook URL<\/strong> \u2013 only if you enter them as alert channels: when an email fails, the site name, subject, recipient and error message are sent there. Slack: <a href=\"https:\/\/slack.com\/terms-of-service\">Terms<\/a>, <a href=\"https:\/\/slack.com\/trust\/privacy\/privacy-policy\">Privacy<\/a>; Discord: <a href=\"https:\/\/discord.com\/terms\">Terms<\/a>, <a href=\"https:\/\/discord.com\/privacy\">Privacy<\/a>; Telegram: <a href=\"https:\/\/telegram.org\/tos\">Terms<\/a>, <a href=\"https:\/\/telegram.org\/privacy\">Privacy<\/a><\/li>\n<\/ul>\n\n<p>The domain check in Tools only performs DNS lookups of the domain you enter. No data is ever sent to Onlinefotka.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>onlinefotka-smtp-mail<\/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 the plugin<\/li>\n<li>Go to <strong>SMTP Mail \u2192 Settings \u2192 Connections<\/strong> and fill in your SMTP server (or pick a preset), or choose Google \/ Microsoft 365 \/ Zoho and click <strong>Connect<\/strong><\/li>\n<li>Go to <strong>SMTP Mail \u2192 Tools<\/strong> and send a test email<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20use%20it%20together%20with%20another%20smtp%20plugin%3F\"><h3>Can I use it together with another SMTP plugin?<\/h3><\/dt>\n<dd><p>No \u2013 only one plugin can send emails. Import the settings (Tools \u2192 Import from WP Mail SMTP), send a test email and deactivate the other plugin.<\/p><\/dd>\n<dt id=\"how%20does%20the%20backup%20connection%20work%3F\"><h3>How does the backup connection work?<\/h3><\/dt>\n<dd><p>If sending through the primary connection fails, the same email is sent right away through the backup connection. The log shows which connection was used and why the primary failed.<\/p><\/dd>\n<dt id=\"which%20value%20do%20i%20use%20for%20%22sent%20by%20plugin%22%20in%20smart%20routing%3F\"><h3>Which value do I use for \"Sent by plugin\" in smart routing?<\/h3><\/dt>\n<dd><p>The plugin folder name shown in the Source column of the email log, for example <code>woocommerce<\/code> or <code>contact-form-7<\/code>.<\/p><\/dd>\n<dt id=\"how%20do%20i%20define%20the%20settings%20in%20wp-config.php%3F\"><h3>How do I define the settings in wp-config.php?<\/h3><\/dt>\n<dd><p>See <strong>SMTP Mail \u2192 Tools \u2192 Settings in wp-config.php<\/strong> for a ready-made example. Supported constants: <code>OFSM_SMTP_HOST<\/code>, <code>OFSM_SMTP_PORT<\/code>, <code>OFSM_SMTP_SECURE<\/code>, <code>OFSM_SMTP_AUTOTLS<\/code>, <code>OFSM_SMTP_AUTH<\/code>, <code>OFSM_SMTP_USER<\/code>, <code>OFSM_SMTP_PASS<\/code>, the same with <code>OFSM_BACKUP_SMTP_<\/code> for the backup connection, <code>OFSM_FROM_EMAIL<\/code>, <code>OFSM_FROM_NAME<\/code>, <code>OFSM_FROM_EMAIL_FORCE<\/code>, <code>OFSM_FROM_NAME_FORCE<\/code>, <code>OFSM_RETURN_PATH<\/code>, <code>OFSM_DO_NOT_SEND<\/code>, <code>OFSM_QUEUE<\/code>, <code>OFSM_ALERT_EMAIL<\/code> and <code>OFSM_CRYPTO_KEY<\/code>.<\/p><\/dd>\n<dt id=\"i%20changed%20the%20security%20keys%20in%20wp-config.php%20and%20the%20password%20stopped%20working\"><h3>I changed the security keys in wp-config.php and the password stopped working<\/h3><\/dt>\n<dd><p>Passwords are encrypted with a key derived from the salts in wp-config.php. After changing them, enter the SMTP password again (the plugin shows a notice). Define <code>OFSM_CRYPTO_KEY<\/code> to use your own fixed key.<\/p><\/dd>\n<dt id=\"background%20sending%20does%20not%20send%20anything\"><h3>Background sending does not send anything<\/h3><\/dt>\n<dd><p>It relies on WP-Cron, which runs only when someone visits the site. On low-traffic sites add a real cron job on the server that calls <code>wp-cron.php<\/code> every minute, or run <code>wp ofsm queue<\/code>.<\/p><\/dd>\n<dt id=\"does%20it%20support%20gmail%20%2F%20microsoft%20365%20%2F%20zoho%20login%20with%20oauth%3F\"><h3>Does it support Gmail \/ Microsoft 365 \/ Zoho login with OAuth?<\/h3><\/dt>\n<dd><p>Yes. Choose the connection type Google, Microsoft 365 \/ Outlook or Zoho Mail, follow the setup guide shown in the connection (create your own app, copy the Client ID and secret, add the redirect URI), save and click <strong>Connect<\/strong>. Emails are then sent through the provider API \u2013 for Microsoft 365 SMTP AUTH does not have to be enabled. OAuth connections can be used as the primary connection, the backup connection or in smart routing.<\/p><\/dd>\n<dt id=\"my%20google%20connection%20stops%20working%20after%20a%20week\"><h3>My Google connection stops working after a week<\/h3><\/dt>\n<dd><p>The Google app is in \"Testing\" mode. Set the publishing status of the OAuth consent screen to \"In production\" (or use the \"Internal\" user type in Google Workspace) and connect again.<\/p><\/dd>\n<dt id=\"microsoft%20365%20stopped%20sending%20after%20many%20months\"><h3>Microsoft 365 stopped sending after many months<\/h3><\/dt>\n<dd><p>The client secret of your Entra app expired. Create a new secret, paste it into the connection, save and click <strong>Reconnect<\/strong>.<\/p><\/dd>\n<dt id=\"what%20happens%20on%20uninstall%3F\"><h3>What happens on uninstall?<\/h3><\/dt>\n<dd><p>Settings, the email log, the queue, stored attachment copies and scheduled events are deleted.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>OAuth login for Google (Gmail API), Microsoft 365 \/ Outlook (Microsoft Graph) and Zoho Mail<\/li>\n<li>Hardening: all output escaped, the tracking pixel is served from a static file<\/li>\n<li>Email controls keys renamed (settings are migrated automatically)<\/li>\n<li>Bundled translations: Slovak, Czech, Hungarian, Polish and German<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"SMTP, Gmail, Microsoft 365 and Zoho (OAuth) sending with backup connection, smart routing, email log, tracking, reports, alerts and queue.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/386167","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=386167"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/onlinefotka"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=386167"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=386167"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=386167"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=386167"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=386167"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=386167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}