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
- Host: GitHub
- URL: https://github.com/valarpirai/disposable-emails-validator-java
- Owner: valarpirai
- License: mit
- Created: 2024-07-28T04:36:12.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-10-25T05:16:48.000Z (7 months ago)
- Last Synced: 2025-02-02T10:42:59.063Z (4 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("[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]") -> falseDisposableEmail.removeDomainFromWhitelist("mailsac.com")
DisposableEmail.isDisposable("mailsac.com") -> true
```Blacklist Domains
```
DisposableEmail.addDomainToBlacklist("gmail.com")
DisposableEmail.isDisposable("[email protected]") -> trueDisposableEmail.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