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: 9 months ago
JSON representation
Disposable Email Domain validator library for Java
- Host: GitHub
- URL: https://github.com/valarpirai/disposable-emails-validator-java
- Owner: valarpirai
- License: mit
- Created: 2024-07-28T04:36:12.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-25T05:16:48.000Z (about 1 year ago)
- Last Synced: 2025-02-02T10:42:59.063Z (11 months ago)
- Topics: bloom-filter, disposable-email, disposable-email-domain-validator, dns-validation, java, kotlin, library, memory-efficient
- Language: Kotlin
- Homepage:
- Size: 1.42 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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("hello@gmail.com") -> false
DisposableEmail.isDisposable("hello@mailsac.com") -> true
```
Disposable domain with valid DNS MX Record
```
DisposableEmail.hasValidMailDomain("hello@mailsac.com") -> true
```
Valid domain without DNS MX Record
```
DisposableEmail.hasValidMailDomain("god.com") -> false
```
Use different DNS resolver
```
DisposableEmail.hasValidMailDomain("hello@gmail.com", DnsResolverType.CLOUD_FLARE) -> true
DisposableEmail.hasValidMailDomain("hello@gmail.com", DnsResolverType.GOOGLE) -> true
```
Whitelist Domains
```
DisposableEmail.addDomainToWhitelist("mailsac.com")
DisposableEmail.isDisposable("hello@mailsac.com") -> false
DisposableEmail.removeDomainFromWhitelist("mailsac.com")
DisposableEmail.isDisposable("mailsac.com") -> true
```
Blacklist Domains
```
DisposableEmail.addDomainToBlacklist("gmail.com")
DisposableEmail.isDisposable("hello@gmail.com") -> 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