{"id":1253,"date":"2026-08-07T16:40:18","date_gmt":"2026-08-07T09:40:18","guid":{"rendered":"http:\/\/www.solidres.com\/blog\/?p=1253"},"modified":"2026-08-07T16:40:18","modified_gmt":"2026-08-07T09:40:18","slug":"mail-catcher-2-1-0-is-out-interception-auto-purge-and-eml-export","status":"publish","type":"post","link":"https:\/\/www.solidres.com\/blog\/2026\/08\/07\/mail-catcher-2-1-0-is-out-interception-auto-purge-and-eml-export\/","title":{"rendered":"Mail Catcher 2.1.0 is out \u2014 interception, auto-purge and .eml export"},"content":{"rendered":"\n<p>Every Joomla developer has a version of this story. You copy the production database to a staging site to reproduce a bug, run a test order, and a few seconds later four hundred real customers receive an order confirmation for a purchase they never made. Or you spend an afternoon chasing a registration email that a user swears never arrived, with nothing to go on but a hopeful glance at the server mail log.<\/p>\n\n<p>Mail Catcher has always solved the second half of that problem: it catches, logs and shows you every email your Joomla site sends. <strong>Version 2.1.0 solves the first half too<\/strong>, and adds the housekeeping, export and search tools that a mail log needs once it has been running for a few months.<\/p>\n\n<h4>Decide what happens to your mail<\/h4>\n\n<p>The headline feature of 2.1.0 is <strong>interception<\/strong>. Under Components &rarr; Mail Catcher &rarr; Options there is now an Interception tab with a single Mode setting:<\/p>\n\n<ul>\n\t<li><strong>Log and send<\/strong> &mdash; mail is logged and delivered normally. This is the default, and it is exactly how earlier versions behaved.<\/li>\n\t<li><strong>Log only<\/strong> &mdash; mail is captured in full and never leaves the server. Nothing reaches anyone.<\/li>\n\t<li><strong>Redirect to test address<\/strong> &mdash; mail is delivered to the address you nominate instead of to the real recipients. Separate several addresses with a comma if the whole team should see them.<\/li>\n<\/ul>\n\n<p>The setting applies to every email the site produces &mdash; Joomla core, your own code and every third party extension &mdash; because Mail Catcher works at the Joomla mailer level rather than hooking individual components. There is nothing to configure per extension.<\/p>\n\n<p>In redirect mode the log still records the <em>original<\/em> To, Cc and Bcc, so you can always see who a mail was really meant for. Anything that was held back is flagged <strong>Intercepted<\/strong> in the list, with a filter to match, and the Resend action follows whichever mode is active at the time you use it. To release a held mail for real, switch the mode back to Log and send, then resend it.<\/p>\n\n<p>Set a freshly cloned staging site to Log only once, and the story at the top of this post cannot happen.<\/p>\n\n<h4>A log that cleans up after itself<\/h4>\n\n<p>A busy site logs a lot of mail, and until now clearing it out was a manual job. Mail Catcher 2.1.0 ships a Task Scheduler plugin with a <strong>purge routine<\/strong>: create a task under System &rarr; Scheduled Tasks, point it at &#8220;Mail Catcher &#8211; Purge caught mails&#8221;, and give it rules.<\/p>\n\n<p>You can delete mails older than a number of days, keep only the newest N mails, or combine both &mdash; keep 30 days but never more than 5,000 rows, for instance. Two switches let you spare anything that matters: never delete failed sends, so delivery problems stay available for debugging, and never delete unread mails, so nothing disappears before you have looked at it. Attachment files are removed from disk along with the rows, and each run reports how many mails it deleted.<\/p>\n\n<h4>Export a message the way it was actually sent<\/h4>\n\n<p>Mail Catcher stores the complete raw MIME message, and 2.1.0 finally lets you have it. Every caught mail now has a <strong>Download .eml<\/strong> button, both in the list and in the message preview. Open the file in Thunderbird, Outlook or Apple Mail, feed it to a deliverability checker, or attach it to a support ticket &mdash; it is the message exactly as it went out, not a reconstruction.<\/p>\n\n<p>The preview also gained a <strong>Headers<\/strong> tab showing the raw MIME header, which is where you go when you need to know what an extension actually put in Reply-To, what Content-Type and encoding were negotiated, or whether that custom header you added really made it into the message.<\/p>\n\n<h4>Finding one email among thousands<\/h4>\n\n<p>The Mails list got the treatment it deserved. You can now filter by date range (from, to, or just one end), by mailer, by sending status, by delivered or intercepted, and by read or unread. Search covers the subject, the body, the sender and the IP address; type an address and it searches recipients, Cc and Bcc instead; type <code>id:1234<\/code> and it goes straight to that mail.<\/p>\n\n<p>Mark as read and Mark as unread are toolbar actions now, so you can clear a hundred rows in one go. And a new quick icon on the administrator dashboard shows how many caught mails you have not read yet, linking straight to the list already filtered &mdash; failed or unexpected mail becomes something you notice, rather than something you have to remember to go and check.<\/p>\n\n<h4>Now in 23 languages<\/h4>\n\n<p>The administrator interface has been translated into 23 languages: Arabic, Hebrew and Persian with full right to left support, Chinese (simplified and traditional), Japanese, Korean, Thai, Vietnamese, Hindi, Indonesian, Turkish, Russian, Greek, Polish, Czech, and the major Western European languages. Plural forms were done per locale rather than machine-mapped, so counts read naturally in each one.<\/p>\n\n<h4>Safer and faster under the hood<\/h4>\n\n<p>Caught HTML mail now renders inside a sandboxed frame, so a malicious email can no longer run scripts in your administrator session simply because you previewed it. Attachment downloads are restricted to the folder belonging to their own mail. Deleting a mail now also deletes its attachment files, which previously lingered on disk forever. And two new database indexes keep the list, the filters and the dashboard responsive on logs with hundreds of thousands of rows.<\/p>\n\n<h4>Upgrading<\/h4>\n\n<p>Mail Catcher 2.1.0 is a normal update through the Joomla Update Manager, or you can download the package and install it over the top. The database schema updates itself, and the two new plugins are installed and enabled for you.<\/p>\n\n<p><strong>Nothing changes in how your site sends mail until you decide it should.<\/strong> The interception mode defaults to Log and send, no purge task is created for you, and the quick icon simply appears on your dashboard. Upgrade first, then turn on the pieces you want.<\/p>\n\n<h4>In short<\/h4>\n\n<ul>\n\t<li>Interception modes: log and send, log only, or redirect to a test address<\/li>\n\t<li>Task Scheduler routine to purge caught mails by age and\/or count<\/li>\n\t<li>Download any caught mail as .eml, plus a raw Headers tab<\/li>\n\t<li>Unread counter on the administrator dashboard<\/li>\n\t<li>Date range, mailer and read\/unread filters, and bulk mark read\/unread<\/li>\n\t<li>23 administrator languages, including right to left scripts<\/li>\n\t<li>Sandboxed HTML preview, hardened attachment downloads, attachment cleanup on delete<\/li>\n\t<li>Faster list and dashboard on large logs<\/li>\n<\/ul>\n\n<p>Mail Catcher 2.1.0 is available now for Joomla 6, and is 100% open source. If you run into anything, open a ticket under Support &rarr; Tickets and we will take a look.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Every Joomla developer has a version of this story. You copy the production database to a staging site to reproduce a bug, run a test order, and a few seconds later four hundred real customers receive an order confirmation for a purchase they never made. Or you spend an afternoon chasing a registration email that [&#8230;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/posts\/1253"}],"collection":[{"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/comments?post=1253"}],"version-history":[{"count":1,"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/posts\/1253\/revisions"}],"predecessor-version":[{"id":1254,"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/posts\/1253\/revisions\/1254"}],"wp:attachment":[{"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/media?parent=1253"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/categories?post=1253"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/tags?post=1253"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}