Detect and block disposable or temporary email addresses in comments, registrations, and contact forms — with full GDPR/CCPA-compliant logging and developer hooks.
-
🔍 Validates email addresses against the throwaway.cloud API
-
🛡️ Blocks temporary/disposable emails in:
- Comment forms
- User registrations
- Popular contact form plugins
-
🔧 Developer-friendly filter to run checks from other plugins
-
📜 GDPR/CCPA-compliant logging with:
- Subject access export (CSV)
- Right to be forgotten deletion
-
🧾 Configurable logging levels: None, Domain only, or Full email
-
✅ Allowlist support for trusted emails/domains
-
🔎 Log viewer with filter/search and export options
-
🧪 PHPUnit test suite + Codecov coverage support
- Upload the ZIP via Plugins → Add New → Upload Plugin
- Activate the plugin
- Go to Settings → throwaway.cloud E-Mail Check Settings to configure
Choose what to store in the log:
- None – No logging
- Domain Only –
example.com
fromuser@example.com
- Full Email – Full address stored (be cautious under GDPR)
Bypass throwaway checks for specific addresses/domains:
admin@example.com
example.org
Accessible under Settings → throwaway.cloud E-Mail Check Settings:
- 📊 Log Viewer with filters
- 📤 Export CSV by filter or by subject
- 🗑️ Delete logs by email/domain (Right to be Forgotten)
Run a throwaway check manually from your plugin:
$is_disposable = apply_filters('throwaway_lookup_check', false, 'user@example.com');
🔍 The source plugin name is automatically inferred from the call stack and logged.
Override or modify the result of a throwaway check:
add_filter('throwaway_lookup_result', function($is_disposable, $email, $context) {
if ($email === 'bypass@example.com') return false;
return $is_disposable;
}, 10, 3);
Retrieve logs for a subject programmatically:
$logs = apply_filters('throwaway_lookup_export_subject', 'user@example.com');
Delete logs for a subject:
do_action('throwaway_lookup_delete_subject', 'user@example.com');
Set up a WordPress test environment:
bash bin/install-wp-tests.sh wordpress_test root root 127.0.0.1 latest
Run tests with coverage:
phpunit --coverage-clover=coverage.xml --coverage-html=coverage-report
MIT License — see LICENSE for full terms.
Made with 💙 by Iocium