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:
License
Unless stated otherwise all works are:
and licensed under:
v3.3.11 (2020/07/28 07:21 +00:00)
- f91bff6 feat(build): update plateform files (@FGRibreau)
- 414a35a Release v3.3.11. (@FGRibreau)
- #280 Merge pull request #280 from jslirola/master (@jslirola)
- 7dee69a Add cuoly.com
- 508159f Add eoopy.com
- 7920454 fix(cargo) (@FGRibreau)
- 8074fd7 feat(cargo): updated to 3.3.10 (@FGRibreau)
- 4eb7b97 feat(python): updated to 3.3.10 (@FGRibreau)
- 153d82d feat(gemspec): updated to 3.3.10 (@FGRibreau)
- 321e7f8 docs(changelog): updated (@FGRibreau)