An open API service indexing awesome lists of open source software.

https://github.com/valarpirai/disposable-emails-validator-java

Disposable Email Domain validator library for Java
https://github.com/valarpirai/disposable-emails-validator-java

bloom-filter disposable-email disposable-email-domain-validator dns-validation java kotlin library memory-efficient

Last synced: about 2 months ago
JSON representation

Disposable Email Domain validator library for Java

Awesome Lists containing this project

README

        

# Disposable email domain validator

## Why?
Use it to validate email addresses on sign up, or just to see how many real email addresses you have in your system.

## [Available in GitHub Maven package](https://github.com/valarpirai/disposable-emails/packages/2217546)
```

github
GitHub Packages
https://:@maven.pkg.github.com/valarpirai/disposable-emails-validator-java

```

```

org.valarpirai
disposable-email
{version}

```

## Usage
We are using an autogenerated list which is updated every 24 hours - https://github.com/disposable/disposable

### Getting latest Domain list
This lib has a list of disposable email domains (encoded file) inside resources.
The following method will download latest disposable email list from [here](https://disposable.github.io/disposable-email-domains/domains.txt) and use it
**Note:** In your application startup, you need to call this method to fetch updated domain list.
```
DisposableEmail.refreshDisposableDomains()
```

Get DNS and disposable details of a email domain. Response `DomainDetails`
```
domainDetails = DisposableEmail.getDomainDetails("gmail.com")

domainDetails.disposableDomain -> false
domainDetails.mxRecordPresent -> true
```
```
domainDetails = DisposableEmail.getDomainDetails("yopmail.com")

domainDetails.disposableDomain -> true
domainDetails.mxRecordPresent -> true
```
```
domainDetails = DisposableEmail.getDomainDetails("nonexisting123.com")

domainDetails.disposableDomain -> false
domainDetails.mxRecordPresent -> false
```

Check whether a given email address is disposable address (local check)
```
DisposableEmail.isDisposable("[email protected]") -> false
DisposableEmail.isDisposable("[email protected]") -> true
```

Disposable domain with valid DNS MX Record
```
DisposableEmail.hasValidMailDomain("[email protected]") -> true
```

Valid domain without DNS MX Record
```
DisposableEmail.hasValidMailDomain("god.com") -> false
```

Use different DNS resolver
```
DisposableEmail.hasValidMailDomain("[email protected]", DnsResolverType.CLOUD_FLARE) -> true
DisposableEmail.hasValidMailDomain("[email protected]", DnsResolverType.GOOGLE) -> true
```

Whitelist Domains
```
DisposableEmail.addDomainToWhitelist("mailsac.com")
DisposableEmail.isDisposable("[email protected]") -> false

DisposableEmail.removeDomainFromWhitelist("mailsac.com")
DisposableEmail.isDisposable("mailsac.com") -> true
```

Blacklist Domains
```
DisposableEmail.addDomainToBlacklist("gmail.com")
DisposableEmail.isDisposable("[email protected]") -> true

DisposableEmail.removeDomainFromBlacklist("gmail.com")
DisposableEmail.isDisposable("gmail.com") -> true
```

### How it works?
- We are using BloomFilter a space-efficient probabilistic data structure to store list of Disposable email domains
- This will work in offline mode.
- We are using DNS over HTTPS (DoH) to verify the MX Records
- CloudFlare (1.1.1.1) and Google(dns.google) DNS resolvers are support
- This will work in online mode. requires internet connection