What is mailchecker?
The mailchecker npm package is used to validate email addresses and check if they belong to disposable email providers. This can be useful for preventing users from signing up with temporary email addresses that may be used for spam or fraudulent activities.
What are mailchecker's main functionalities?
Validate Email Address
This feature allows you to check if an email address is valid and not from a disposable email provider. The `isValid` method returns a boolean indicating the validity of the email.
const mailchecker = require('mailchecker');
const email = 'example@example.com';
const isValid = mailchecker.isValid(email);
console.log(`Is the email valid? ${isValid}`);
Check Disposable Email
This feature allows you to specifically check if an email address is from a disposable email provider. The `isDisposable` method returns a boolean indicating whether the email is disposable.
const mailchecker = require('mailchecker');
const email = 'example@disposable.com';
const isDisposable = mailchecker.isDisposable(email);
console.log(`Is the email disposable? ${isDisposable}`);
Other packages similar to mailchecker
email-verifier
The email-verifier package provides email verification and validation services. It checks the syntax, domain, and mailbox existence. Compared to mailchecker, it offers more comprehensive email validation features, including SMTP checks.
disposable-email-domains
The disposable-email-domains package provides a list of disposable email domains. It is a simpler package compared to mailchecker, focusing solely on identifying disposable email domains without additional validation features.
email-existence
The email-existence package checks if an email address exists by connecting to the mail server. It provides a more in-depth validation compared to mailchecker, which primarily focuses on identifying disposable emails.
MailChecker



Cross-language email validation. Backed by a database of over 30 000 throwable email domains.
This will be very helpful when you have to contact your users and you want to avoid errors causing lack of communication or want to block "spamboxes".
Need to embed a charts into an email?
It's over with Image-Charts, no more server-side rendering pain, 1 url = 1 chart.
https://image-charts.com/chart?
cht=lc // chart type
&chd=s:cEAELFJHHHKUju9uuXUc // chart data
&chxt=x,y // axis
&chxl=0:|0|1|2|3|4|5| // axis labels
&chs=873x200 // size
Use Image-Charts for free

Upgrade from 1.x to 3.x
Mailchecker public API has been normalized, here are the changes:
- NodeJS/JavaScript:
MailChecker(email)
-> MailChecker.isValid(email)
- PHP:
MailChecker($email)
-> MailChecker::isValid($email)
- Python
import MailChecker
m = MailChecker.MailChecker()
if not m.is_valid('bla@example.com'):
became:
import MailChecker
if not MailChecker.is_valid('bla@example.com'):
MailChecker currently supports:
Usage
NodeJS
var MailChecker = require('mailchecker');
if(!MailChecker.isValid('myemail@yopmail.com')){
console.error('O RLY !');
process.exit(1);
}
if(!MailChecker.isValid('myemail.com')){
console.error('O RLY !');
process.exit(1);
}
JavaScript
<script type="text/javascript" src="MailChecker/platform/javascript/MailChecker.js"></script>
<script type="text/javascript">
if(!MailChecker.isValid('myemail@yopmail.com')){
console.error('O RLY !');
}
if(!MailChecker.isValid('myemail.com')){
console.error('O RLY !');
}
</script>
PHP
include __DIR__."/MailChecker/platform/php/MailChecker.php";
if(!MailChecker::isValid('myemail@yopmail.com')){
die('O RLY !');
}
if(!MailChecker::isValid('myemail.com')){
die('O RLY !');
}
Python
pip install mailchecker
from MailChecker import MailChecker
if not MailChecker.is_valid('bla@example.com'):
print "O RLY !"
Django validator: https://github.com/jonashaag/django-indisposable
Ruby
require 'mail_checker'
unless MailChecker.valid?('myemail@yopmail.com')
fail('O RLY!')
end
Rust
extern crate mailchecker;
assert_eq!(true, mailchecker::is_valid("plop@plop.com"));
assert_eq!(false, mailchecker::is_valid("\nok@gmail.com\n"));
assert_eq!(false, mailchecker::is_valid("ok@guerrillamailblock.com"));
Elixir
Code.require_file("mail_checker.ex", "mailchecker/platform/elixir/")
unless MailChecker.valid?("myemail@yopmail.com") do
raise "O RLY !"
end
unless MailChecker.valid?("myemail.com") do
raise "O RLY !"
end
Clojure
; no package yet; just drop in mailchecker.clj where you want to use it.
(load-file "platform/clojure/mailchecker.clj")
(if (not (mailchecker/valid? "myemail@yopmail.com"))
(throw (Throwable. "O RLY!")))
(if (not (mailchecker/valid? "myemail.com"))
(throw (Throwable. "O RLY!")))
Go
package main
import (
"log"
"github.com/FGRibreau/mailchecker/platform/go"
)
if !mail_checker.IsValid('myemail@yopmail.com') {
log.Fatal('O RLY !');
}
if !mail_checker.IsValid('myemail.com') {
log.Fatal("O RLY !")
}
Installation
Go
go get https://github.com/FGRibreau/mailchecker
NodeJS/JavaScript
npm install mailchecker
Ruby
gem install ruby-mailchecker
PHP
composer require fgribreau/mailchecker
We accept pull-requests for other package manager.
Data sources
TorVPN
$('td', 'table:last').map(function(){
return this.innerText;
}).toArray();
BloggingWV
Array.prototype.slice.call(document.querySelectorAll('.entry > ul > li a')).map(function(el){return el.innerText});
... please add your own dataset to list.txt.
Regenerate libraries from list.txt
Just run (requires NodeJS):
npm run build
Development
Development environment requires docker.
npm install
npm run setup
npm test
Backers
Maintainers
These amazing people are maintaining this project:
No sponsors yet! Will you be the first?

Contributors
These amazing people have contributed code to this project:
Discover how you can contribute by heading on over to the CONTRIBUTING.md
file.
License
Unless stated otherwise all works are:
and licensed under:
v4.1.1 (2021/12/02 11:15 +00:00)
- e9ca221 Release v4.1.1. (@FGRibreau)
- dc65c29 feat(build): update plateform files (@FGRibreau)
- 8615bc9 fix (@FGRibreau)
- f519637 fix: php test issue (@FGRibreau)
- #330 Merge pull request #330 from Buffele/list (@Buffele)
- e386039 Update list.txt (@Buffele)
- 0b20b5c Update list.txt (@Buffele)
- 30c723c Update list.txt (@Buffele)
- f51721f Update list.txt (@Buffele)
- fcc01b4 Update list.txt (@Buffele)
- 0ad7c67 Update list.txt (@Buffele)
- af8399b Update list.txt (@Buffele)
- 5e684e8 Update list.txt (@Buffele)
- 6d4ffcf Update list.txt (@Buffele)
- ab677c7 Update list.txt (@Buffele)
- a910883 Update list.txt (@Buffele)
- #328 Merge pull request #328 from Buffele/feature/update_php_unit (@Buffele)
- #327 Merge pull request #327 from Buffele/feature/php_performance_improvements (@Buffele)
- b4c7bbb Merge branch 'master' into feature/update_php_unit (@Buffele)
- #329 Merge pull request #329 from Buffele/list-1 (@Buffele)
- dc30ec4 feat(cargo): updated to 4.1.0 (@FGRibreau)
- 4c4c529 feat(python): updated to 4.1.0 (@FGRibreau)
- cd32afb feat(gemspec): updated to 4.1.0 (@FGRibreau)
- 8031274 docs(changelog): updated (@FGRibreau)