=== BounceLens Email Check ===
Contributors: bouncelens
Tags: email validation, disposable email, spam, registration, woocommerce
Requires at least: 5.5
Tested up to: 7.1
Requires PHP: 7.2
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Stops fake, mistyped and throwaway email addresses in registration, comment, WooCommerce and contact forms. No account, no API key.

== Description ==

BounceLens Email Check stops bad email addresses before they reach your user list, your shop or your inbox.

When a visitor types an address, the plugin checks it and shows a clear message if something is wrong:

* **Typos:** `name@gmial.com` gets "Did you mean name@gmail.com?"
* **Dead domains:** domains that do not exist, have no mail server, or say they accept no email.
* **Throwaway addresses:** Mailinator, 10minutemail and thousands of similar services.
* **Optional:** shared inboxes (info@, sales@) and free providers (for sites that want work addresses).

It runs on your own server. There is no account, no API key, no credits and no limit, and no address is sent to BounceLens or anyone else.

= Forms it checks =

* WordPress registration, and the sign-up form on multisite
* Edit profile, when someone changes their own address
* Comments from visitors who are not logged in
* WooCommerce account registration, account details, and the billing email at checkout (shortcode checkout and the checkout block)
* Contact Form 7
* WPForms
* Ninja Forms
* Forminator
* Formidable Forms
* Fluent Forms
* Mailchimp for WordPress (MC4WP) sign-up forms
* Gravity Forms
* Elementor Pro forms

Each group can be switched off under **Settings → BounceLens Email Check**.

= Honest about what it can do =

The plugin checks the format, the domain and its mail server, and known throwaway services. It cannot tell whether one specific mailbox exists: that needs a conversation with the receiving mail server, which this plugin does not do.

If your server's DNS does not answer, the address is accepted. A slow resolver never locks real people out of a form.

= For developers =

* `bouncelens_email_check_problem( $email )` returns the message for an address, or `null` when it is accepted. Use it in your own form handler.
* Filter `bouncelens_email_check_result` changes the result for one address.
* Filter `bouncelens_email_check_resolver` replaces the DNS resolver.

== Installation ==

1. In your WordPress admin, open **Plugins → Add New**, search for **BounceLens Email Check**, then click **Install Now** and **Activate**.
2. That's it. The default settings already protect registration, profiles, comments, WooCommerce and the supported form plugins.
3. To change what is checked or blocked, open **Settings → BounceLens Email Check**.

== Frequently Asked Questions ==

= Do I need an account or an API key? =

No. The check runs on your own server and has no limits.

= Is any data sent to BounceLens? =

No. The address a visitor types stays on your server. Only the domain name (the part after the @) is looked up through your server's normal DNS resolver, the same way your server looks up any other domain.

= Will it slow my forms down? =

The check is one or two DNS lookups for the address's domain. The answer is remembered for 10 minutes, so popular domains such as gmail.com cost nothing after the first visitor.

= A real address was refused. What can I do? =

Add its domain under **Always allow these domains**. Addresses at those domains, and their subdomains, skip every check except the basic format. Please also tell us the domain at support@bouncelens.com so we can fix it.

= Does it confirm that a mailbox exists? =

No. An address that passes has a correct format and a domain that can receive email. Only sending a message can prove that one specific mailbox exists.

= Can administrators still add any address? =

Yes. People who can manage users are not checked on the profile and user screens.

= Where does the list of throwaway domains come from? =

From the public-domain (CC0) list at github.com/disposable-email-domains/disposable-email-domains. It ships inside the plugin and is updated with each release.

= Which forms are not covered? =

Forms from plugins that are not listed above. Developers can call `bouncelens_email_check_problem()` from any form handler.

== Screenshots ==

1. The registration form suggests the corrected address for a typo.
2. Settings: which forms to check and what to block.

== Changelog ==

= 1.0.0 =
* First release.

== Upgrade Notice ==

= 1.0.0 =
First release.
