

Frontend inbox — email generation, copy button, and real-time message list
Self-hosted. Privacy-first. Fully yours.
Tempmails turns your WordPress site into a self-hosted temporary email
service. Visitors generate a random disposable email address, receive
messages in a real-time inbox, and discard them when done — all without
leaving your site.
Unlike third-party services, Tempmails runs entirely on your own server
and IMAP mailbox. You own the data, the domain, and the brand.
🔒 No third-party email APIs
📬 Real IMAP inbox — not a simulation
🎨 Material Design 3 UI — beautiful out of the box
⚡ AJAX-powered — no page reloads
Everything you need to get started, get help, and stay connected:
📨 Email Engine
🎨 Design & UI
🛡️ Privacy & Data
⚙️ WordPress Native
.pot file includedPlace the inbox anywhere on your site with one shortcode:
[tempmails_inbox]
This renders the full inbox UI — email generation, copy button,
auto-refresh, message list, and message viewer modal.
Tempmails Core is frozen infrastructure. All new functionality is
delivered via addons using a documented, stable hook system — your site
never breaks on Core updates.
Available addon hooks cover: email generation, message routing, inbox
access control, multi-domain support, billing integration, and more.
See the Hooks section below for the full reference.
Tempmails stores temporary email addresses in browser cookies to
maintain inbox sessions between page loads. No personal data is collected,
stored against user accounts, or transmitted to any external service.
See External Services below for details on the optional GitHub
ecosystem feed.
Tempmails exposes a complete hook system for addon developers. All hooks
below are stable and frozen — they will not be renamed, removed, or
have their signatures changed in any minor version.
tempmails_loaded — Core fully initialized; safe for addon bootstraptempmails_core_ready — fires after DB integrity check; passes Coretempmails_activated — fires on plugin activation; safe for addon setuptempmails_deactivated — fires on plugin deactivationtempmails_email_generated — new address generated; params: $email,tempmails_inbox_accessed — user opened inbox; params: $email, $iptempmails_message_received — new message stored; params: $message_id,tempmails_message_marked_seen — message read; params: $message_idtempmails_message_deleted — soft delete triggered; params: $message_id,tempmails_cleanup_completed — cron cleanup finished; params:tempmails_fetch_completed — fetch cycle finished; params: $resultstempmails_registered_addons — register your addon for the Addons admintempmails_generated_email — modify a generated address before returningtempmails_available_domains — modify the domain list available fortempmails_can_fetch_messages — allow/block a fetch cycle; params:$enginetempmails_can_process_message — allow/block a single message; params:$messagetempmails_can_store_message — allow/block DB insert; params: $bool,tempmails_can_read_inbox — allow/block inbox access; params: $bool,tempmails_message_content — filter body before display; params:$message_idtempmails_default_settings — modify default option values on activationtempmails_inbox_attributes — modify shortcode default attributestempmails_admin_dashboard_stats — extend dashboard stat cardstempmails_settings_tabs — add custom tabs to the Settings pageTempmails fetches a public JSON file from GitHub to display addon and
ecosystem information inside the WordPress admin panel.
What this connection does:
Remote endpoint:
https://raw.githubusercontent.com/ubermensch-site/tempmails-ecosystem/main/ecosystem.json
Service provider: GitHub
Privacy policy: https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement
To disable this connection entirely, uncheck Ecosystem Feed under
Tempmails Settings General. Hardcoded fallback content is shown
instead — no requests are made.
The frontend inbox loads the Inter and Poppins typefaces and the
Material Symbols icon font from Google Fonts CDN.
What this connection does:
[tempmails_inbox] is renderedService provider: Google Fonts
Privacy policy: https://developers.google.com/fonts/faq/privacy
To avoid this (e.g. for GDPR compliance), dequeue tempmails-google-fonts
and load self-hosted font copies instead.
This section documents internal implementation details, security practices,
and notes for addon developers.
All security changes are tracked here for auditing purposes.
2026-04-04 — Security Review Pass (v1.0.7 patch)
ajax_delete_message(): $_POST['message_id']wp_unslash()-ed but not sanitized, with a phpcs:ignore2026-04-02 — Security Review Pass (v1.0.7 patch)
<style> echo from render_page().assets/css/admin.css.inject_css_variables() refactored: replacedwp_add_inline_style('tempmails-admin', ...).$v() return values now pass through esc_attr().inject_frontend_css_variables() refactored:esc_attr(), wp_strip_all_tags() applied.wp_footer fallback replaced raw echo '<style>'<script> replaced with<script> replaced withajax_mark_seen(): sanitized withsave_settings(): Raw $_POST replaced withget_emails(): Cookie data sanitizedarray_values(array_filter(array_map('sanitize_email', $raw))).Hook Stability Guarantee
All hooks listed in the == Hooks == section are frozen. Signatures will
not change in any 1.x release. Breaking changes will only occur in a major
version bump with a migration guide.
$clean_post in save_settings hooks
As of the 2026-04-02 security patch, both tempmails_before_save_settings
and tempmails_before_save_imap_settings receive a sanitized copy of
$_POST. If your addon previously relied on raw values via these hooks,
retrieve those fields directly from $_POST with appropriate sanitization.
CSS Variable Injection
inject_css_variables() now attaches inline CSS to the `tempmails-admin`
style handle. If your addon dequeues tempmails-admin, Design color
variables will not be applied on admin pages.
inject_frontend_css_variables() uses a priority waterfall:
1. Attaches to tempmails-frontend if registered/enqueued
2. Falls back to tempmails-frontend-css
3. Registers a dummy handle tempmails-design-vars in wp_footer at
priority 1
tempmails/
├── assets/
│ ├── css/
│ │ ├── admin.css
│ │ ├── frontend.css
│ │ └── ecosystem.css
│ └── js/
│ ├── admin.js
│ ├── admin-design.js
│ └── frontend.js
├── core/
│ ├── class-core.php
│ ├── class-admin.php
│ ├── class-design.php
│ ├── class-ecosystem.php
│ ├── class-email-generator.php
│ └── class-addon-handler.php
├── includes/
│ ├── class-tempmails-shortcodes.php
│ ├── class-tempmails-database.php
│ ├── class-tempmails-settings.php
│ ├── class-tempmails-imap.php
│ └── class-tempmails-fetcher.php
└── tempmails.php