{"id":268742,"date":"2025-12-21T05:56:57","date_gmt":"2025-12-21T05:56:57","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pinnys-simple-smtp\/"},"modified":"2026-03-06T20:57:33","modified_gmt":"2026-03-06T20:57:33","slug":"pinnys-simple-smtp","status":"publish","type":"plugin","link":"https:\/\/es-ec.wordpress.org\/plugins\/pinnys-simple-smtp\/","author":23272894,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.2.0","stable_tag":"1.2.0","tested":"6.9.4","requires":"5.0","requires_php":"7.0","requires_plugins":null,"header_name":"Pinny's Simple SMTP","header_author":"Pinny Fried","header_description":"Lightweight SMTP plugin with test email and zero bloat.","assets_banners_color":"233e5a","last_updated":"2026-03-06 20:57:33","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/pinnyfried.com","header_author_uri":"https:\/\/www.pinnyfried.com","rating":5,"author_block_rating":0,"active_installs":30,"downloads":450,"num_ratings":1,"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":"realpinny","date":"2025-12-30 04:30:24"},"1.1.0":{"tag":"1.1.0","author":"realpinny","date":"2026-03-01 20:42:46"},"1.2.0":{"tag":"1.2.0","author":"realpinny","date":"2026-03-06 20:57:33"}},"upgrade_notice":{"1.2.0":"<p>New: Optional wp-config configuration mode. Define SMTP settings in wp-config.php to lock the admin UI and prevent dashboard changes. Includes additional edge-case hardening and reliability improvements.<\/p>","1.1.0":"<p>Major Update: Switched to native WP Settings API for stability and fixed caching issues. Plugin size reduced to ~3KB (yup, you read that right).<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3424486,"resolution":"128x128","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3424466,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3424466,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","1.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3476079,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3476112,"resolution":"2","location":"assets","locale":""}},"screenshots":{"1":"Simple SMTP settings interface.","2":"Forced configuration mode via wp-config.php (read-only admin UI)."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[267,897,450,257230,6696],"plugin_category":[41],"plugin_contributors":[252008],"plugin_business_model":[],"class_list":["post-268742","plugin","type-plugin","status-publish","hentry","plugin_tags-email","plugin_tags-gmail","plugin_tags-mail","plugin_tags-no-bloat","plugin_tags-smtp","plugin_category-communication","plugin_contributors-realpinny","plugin_committers-realpinny"],"banners":{"banner":"https:\/\/ps.w.org\/pinnys-simple-smtp\/assets\/banner-772x250.png?rev=3424466","banner_2x":"https:\/\/ps.w.org\/pinnys-simple-smtp\/assets\/banner-1544x500.png?rev=3424466","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/pinnys-simple-smtp\/assets\/icon-128x128.png?rev=3424486","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/pinnys-simple-smtp\/assets\/screenshot-1.png?rev=3476079","caption":"Simple SMTP settings interface."},{"src":"https:\/\/ps.w.org\/pinnys-simple-smtp\/assets\/screenshot-2.png?rev=3476112","caption":"Forced configuration mode via wp-config.php (read-only admin UI)."}],"raw_content":"<!--section=description-->\n<p><strong>Pinny's Simple SMTP is a ultra lightweight SMTP plugin weighing in at just 4KB.<\/strong> It\u2019s simple to use, highly secure, and includes all the basic features you need to send emails reliably.<\/p>\n\n<h3>\ud83d\ude80 Super Easy 30-Second Configuration<\/h3>\n\n<p>Tired of bloated setup wizards, \"Connect Account\" popups, and endless menus?<\/p>\n\n<p><strong>Pinny's Simple SMTP is designed to be invisible.<\/strong> We removed the fluff so you can get back to work.\n1. Enter your Host &amp; Port.\n2. Enter your Login.\n3. Click Save.<\/p>\n\n<p><strong>That\u2019s it. You are done.<\/strong>\nThere is no complex UI to learn. No dashboards to manage. It is a true <strong>\"Set and Forget\"<\/strong> solution that just works.<\/p>\n\n<p>Unlike most SMTP plugins <strong>(which are typically 2MB+ in size), Pinny's Simple SMTP is ultra-lightweight,<\/strong> easy to set up, and never compromises on security. We ensure your sensitive credentials are always protected with <strong>automatic encryption<\/strong>\u2014no more storing passwords in plain text.<\/p>\n\n<p><strong>This plugin is different.<\/strong> It\u2019s <strong>smaller than a favicon,<\/strong> works with <strong>any mail provider,<\/strong> and takes just seconds to set up.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li><strong>Ultra Lightweight (4KB):<\/strong> This is the a ultra lightweight SMTP plugin. It has zero impact on your site speed.<\/li>\n<li><strong>Encrypted Security:<\/strong> We take security seriously. Your SMTP password is <strong>encrypted<\/strong> in the database using native WordPress salts. We never store credentials in plain text.<\/li>\n<li><strong>Dead Easy Setup:<\/strong> No confusing wizards or tutorials needed. Just enter your Host, Port, and Login, then click Save.<\/li>\n<li><strong>All Basic Features:<\/strong> Supports TLS\/SSL, custom ports, \"From\" email\/name overrides, and includes a 1-Click Test Email tool.<\/li>\n<li><strong>Zero Bloat:<\/strong> No ads, no dashboard widgets, no usage tracking, and no upsells.<\/li>\n<li><strong>wp-config Configuration Mode:<\/strong> For added security, define SMTP settings in <code>wp-config.php<\/code> and lock the admin UI.<\/li>\n<\/ul>\n\n\n\n<h3>\u2699\ufe0f Advanced: Configure SMTP via wp-config.php<\/h3>\n\n<p>Pinny's Simple SMTP supports <strong>configuration directly from <code>wp-config.php<\/code><\/strong>, allowing administrators and developers to <strong>lock SMTP settings and prevent changes from the WordPress dashboard<\/strong>.<\/p>\n\n<p>When enabled, the plugin automatically switches the admin interface to <strong>read-only mode<\/strong>.<\/p>\n\n<p>To enable this mode, add the following constants to your <code>wp-config.php<\/code> file<\/p>\n\n<pre><code>define('PINNYS_SMTP_FORCE', true);\n\ndefine('PINNYS_SMTP_ENABLED', true);\ndefine('PINNYS_SMTP_HOST', 'smtp.gmail.com');\ndefine('PINNYS_SMTP_PORT', 587);\ndefine('PINNYS_SMTP_ENCRYPTION', 'tls');\n\ndefine('PINNYS_SMTP_AUTH', true);\ndefine('PINNYS_SMTP_USERNAME', 'your@email.com');\ndefine('PINNYS_SMTP_PASSWORD', 'your_app_password');\n\ndefine('PINNYS_SMTP_FROM_EMAIL', 'your@email.com');\ndefine('PINNYS_SMTP_FROM_NAME', 'Your Website');\n<\/code><\/pre>\n\n<p>Once <code>PINNYS_SMTP_FORCE<\/code> is enabled:<\/p>\n\n<ul>\n<li>SMTP settings are <strong>loaded from <code>wp-config.php<\/code><\/strong><\/li>\n<li>The WordPress settings page becomes <strong>read-only<\/strong><\/li>\n<li>Dashboard changes cannot override your configuration<\/li>\n<\/ul>\n\n<p>Note: If <code>PINNYS_SMTP_FORCE<\/code> is not defined, the plugin behaves normally and settings can be configured from the WordPress dashboard.<\/p>\n\n<h3>\ud83d\udee1\ufe0f The \"Zero-Retention\" Security Promise<\/h3>\n\n<p><strong>Pinny's Simple SMTP<\/strong> is built on a strict security philosophy: <strong>WordPress is a CMS, not an Email Archive.<\/strong><\/p>\n\n<p>Most SMTP plugins log every email sent from your site into your WordPress database. While this seems convenient, it introduces massive security risks, database bloat, and privacy violations.<\/p>\n\n<p>We feature a <strong>Zero-Retention Architecture<\/strong>. We connect, deliver, and vanish. Here is why this is safer for you:<\/p>\n\n<h4>1. The Security Risk (Why we don't log)<\/h4>\n\n<p>Storing email logs in your database creates a high-value target for hackers.<\/p>\n\n<ul>\n<li><strong>The \"Big Hack\" Reality:<\/strong> In 2024 and 2025, major SMTP plugins (such as Post SMTP) suffered critical vulnerabilities (<strong><a href=\"https:\/\/www.wordfence.com\/threat-intel\/vulnerabilities\/id\/e675d64c-cbb8-4f24-9b6f-2597a97b49af\">CVE-2023-6875<\/a><\/strong> and <strong><a href=\"https:\/\/zeropath.com\/blog\/cve-2025-11833-post-smtp-unauthorized-email-log-access\">CVE-2025-11833<\/a><\/strong>). Hackers were able to bypass authentication, <strong>trigger password reset emails<\/strong>, read the plugin's email logs to capture the reset link, and take over the entire website.<\/li>\n<li><strong>Our Fix:<\/strong> You cannot steal what isn't there. By <strong>not<\/strong> logging emails, Pinny's Simple SMTP renders this entire class of \"Account Takeover\" attacks impossible.<\/li>\n<\/ul>\n\n<h4>2. The Database &amp; Privacy Problem<\/h4>\n\n<ul>\n<li><strong>Bloat:<\/strong> Transactional logs grow indefinitely. A busy store sends thousands of emails a month. Storing these in <code>wp_options<\/code> or custom tables slows down your site and bloats your backups.<\/li>\n<li><strong>GDPR &amp; Privacy:<\/strong> Your database should not permanently store customer PII (Personally Identifiable Information) like password reset links, purchase receipts, or private contact form messages. If your site is compromised, those logs are a leak waiting to happen.<\/li>\n<\/ul>\n\n<h4>3. The Right Way to Log<\/h4>\n\n<p>If you need to track email delivery, do it where it belongs: <strong>At your Email Provider.<\/strong><\/p>\n\n<ul>\n<li><strong>Gmail \/ Google Workspace:<\/strong> Has a \"Sent\" folder and comprehensive audit logs.<\/li>\n<li><strong>SendGrid \/ Mailgun \/ SES:<\/strong> These services are built to archive millions of emails securely, with proper rotation policies and access controls.<\/li>\n<li><strong>Microsoft \/ Outlook:<\/strong> Native \"Sent Items\" retention.\n<strong>Pinny's Simple SMTP<\/strong> keeps your WordPress database clean, fast, and secure by letting your email provider do its job.<\/li>\n<\/ul>\n\n<h3>\ud83d\udeab The \u201cAnti-Bloat\u201d Architecture: Why We Rejected OAuth<\/h3>\n\n<p><strong>Pinny\u2019s Simple SMTP<\/strong> is built on a strict performance philosophy: <strong>Do not load code you do not use.<\/strong><\/p>\n\n<p>The industry standard is to force users into OAuth (Log in with Google\/Microsoft). While this looks fancy, for a WordPress plugin, it is technically inferior to standard SMTP. Here is why we deliberately stripped OAuth out of Pinny\u2019s:<\/p>\n\n<p><strong>1. The \u201cUniversal Adapter\u201d Trap (Bloat)<\/strong>\nMost users connect to <strong>one<\/strong> provider (e.g., just Gmail). However, to support OAuth, other plugins must bundle massive SDK libraries for 10\u201315 different services (Google, Microsoft, Amazon, Yahoo, Zoho, etc.).<\/p>\n\n<ul>\n<li><strong>The Result:<\/strong> You install megabytes of vendor code just to send a simple email.<\/li>\n<li><strong>Our Fix:<\/strong> Pinny\u2019s uses standard SMTP. We don\u2019t force you to host 14 unused API libraries on your server just to use the 15th. This keeps our codebase at <strong>~4KB<\/strong>.<\/li>\n<\/ul>\n\n<p><strong>2. The Complexity Risk (Security)<\/strong>\nIn security, <strong>Complexity is the Enemy.<\/strong> OAuth flows require redirects, token storage, refresh tokens, and constant API updates. Every external library added to a plugin increases the \u201cAttack Surface\u201d\u2014more code means more places for bugs to hide.<\/p>\n\n<ul>\n<li><strong>The Reality:<\/strong> If a plugin\u2019s bundled \u201cGoogle API Client\u201d has a vulnerability, your site is at risk\u2014even if you are using Outlook.<\/li>\n<li><strong>Our Fix:<\/strong> We use native WordPress functions. <strong>No external dependencies.<\/strong> No third-party SDKs. No supply-chain vulnerabilities.<\/li>\n<\/ul>\n\n<p><strong>3. The Reality of \"Shared OAuth Infrastructure\"<\/strong>\nMany plugins advertise <strong>\u201cone-click OAuth login\u201d<\/strong> for Gmail or Microsoft 365. To provide this convenience without requiring users to create their own developer credentials, these plugins typically authenticate through a <strong>shared OAuth application (Client ID and Secret) owned by the plugin developer.<\/strong><\/p>\n\n<p>This creates several potential risks including:<\/p>\n\n<ul>\n<li><strong>Shared API rate limits<\/strong> OAuth quotas apply to the shared application, not your individual site.<\/li>\n<li><strong>Abuse impact<\/strong> If other sites using the same OAuth application send spam or violate provider policies, the provider may restrict or flag the application, potentially affecting all connected users.<\/li>\n<li><strong>Application suspension<\/strong> When the shared OAuth application is disabled or restricted by the provider, authentication will fail for every site using it.<\/li>\n<li><strong>Developer infrastructure dependency<\/strong> Some plugins route OAuth authentication through servers operated by the plugin developer. If that infrastructure experiences downtime, users may be unable to connect accounts or refresh authentication tokens.<\/li>\n<li><strong>Maintenance risk<\/strong> OAuth integrations require ongoing API updates. If a plugin is abandoned and the OAuth application is not maintained, authentication may eventually stop working.<\/li>\n<\/ul>\n\n<p><strong>Pinny\u2019s Simple SMTP<\/strong> avoids these dependencies entirely by using <strong>direct SMTP authentication,<\/strong> allowing your site to communicate directly with your mail server without <strong>shared OAuth infrastructure.<\/strong><\/p>\n\n<p><strong>4. App Passwords: The Superior Choice<\/strong>\nWe use <strong>App Passwords<\/strong> (Standard SMTP Authentication). This is the secure, recommended method for server-side mailing (Gmail\/Workspace &amp; Microsoft 365).<\/p>\n\n<ul>\n<li><strong>Strictly Scoped:<\/strong> An App Password usually only has permission to <em>send mail<\/em>. Unlike an OAuth token (which can sometimes be scoped too broadly), an App Password cannot be used to change your account settings or read your Drive files.<\/li>\n<li><strong>Instantly Revocable:<\/strong> If you suspect a breach, you can revoke that specific App Password instantly from your Google\/Microsoft dashboard without changing your main login credentials.<\/li>\n<li><strong>Zero Downtime:<\/strong> OAuth tokens expire or disconnect if the API changes. App Passwords work until you say stop.<\/li>\n<\/ul>\n\n<strong>Pinny\u2019s Simple SMTP<\/strong> chooses stability over shiny buttons. Enter your Host, Port, and App Password \u2192 Save. <strong>Done.<\/strong>\n\n<!--section=installation-->\n<ol>\n<li><strong>Upload the Plugin<\/strong><\/li>\n<\/ol>\n\n<p>- Download the plugin ZIP file.\n- In your WordPress admin dashboard, navigate to <strong>Plugins &gt; Add New<\/strong>, and click <strong>Upload Plugin<\/strong>.\n- Choose the ZIP file you downloaded and click <strong>Install Now<\/strong>.<\/p>\n\n<ol>\n<li><strong>Activate the Plugin<\/strong><\/li>\n<\/ol>\n\n<p>- Once installed, click <strong>Activate<\/strong> to enable Pinny\u2019s Simple SMTP.<\/p>\n\n<ol>\n<li><strong>Configure SMTP Settings<\/strong><\/li>\n<\/ol>\n\n<p>- Go to <strong>Settings &gt; Pinny\u2019s SMTP<\/strong> in the admin menu.\n- Enter your SMTP host, port, and other settings.\n- Save your changes.<\/p>\n\n<ol>\n<li><strong>Send a Test Email<\/strong><\/li>\n<\/ol>\n\n<p>- Enter a test email address and click <strong>Send Test Email<\/strong> to verify your SMTP configuration.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20set%20up%20pinny%27s%20simple%20smtp%3F\"><h3>How do I set up Pinny's Simple SMTP?<\/h3><\/dt>\n<dd><p>Setting it up is easy! Just enter your SMTP Host, Port, and Login credentials in the plugin settings, then click Save. That's it!<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20gmail%20or%20outlook%3F\"><h3>Does this work with Gmail or Outlook?<\/h3><\/dt>\n<dd><p>Yes! However, because we don't use bloated OAuth libraries, you must use an <strong>App Password<\/strong> generated by Google or Microsoft in place of your standard login password.<\/p><\/dd>\n<dt id=\"how%20is%20my%20password%20stored%3F\"><h3>How is my password stored?<\/h3><\/dt>\n<dd><p>Your SMTP password is automatically encrypted in the database using WordPress salts. We never store credentials in plain text, ensuring your data is secure.<\/p><\/dd>\n<dt id=\"what%20makes%20this%20plugin%20different%20from%20other%20smtp%20plugins%3F\"><h3>What makes this plugin different from other SMTP plugins?<\/h3><\/dt>\n<dd><p>Pinny's Simple SMTP is 4KB, the ultra lightweight SMTP plugin on WordPress. It\u2019s quick to set up, secure with encrypted passwords, and has zero bloat\u2014no ads, upsells, or unnecessary features.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>NEW: Optional wp-config configuration mode (<code>PINNYS_SMTP_FORCE<\/code>) allows SMTP settings to be defined in wp-config.php.<\/li>\n<li>NEW: Admin UI automatically switches to read-only mode when settings are controlled via wp-config.php.<\/li>\n<li>IMPROVEMENT: SMTP configuration handling refactored for improved reliability and consistency.<\/li>\n<li>HARDENING: Additional edge-case handling and internal stability improvements.<\/li>\n<li>CODE: Internal architecture improvements while keeping the plugin extremely lightweight.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>IMPROVEMENT: Major refactor to use the native WordPress Settings API.<\/li>\n<li>FIX: Resolved caching issue where \"Settings Saved\" notices were not appearing.<\/li>\n<li>OPTIMIZATION: Massive code reduction. Now only ~3KB.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Ultra lightweight SMTP plugin (~4KB). Encrypted passwords, zero bloat, and simple setup for Gmail, Outlook, and any mail server.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/268742","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=268742"}],"author":[{"embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/realpinny"}],"wp:attachment":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=268742"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=268742"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=268742"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=268742"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=268742"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=268742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}