📫 Cross-language temporary (disposable/throwaway) email detection library. Covers 55 734+ fake email providers.
See the codeCross-language email validation. Backed by a database of over 55 000 throwable email domains.
FILTER_VALIDATE_EMAIL for PHP)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".
|
France-Nuage Sovereign French cloud for your signup pipeline. No vendor lock-in. |
![]() Hook0 Send signup events as signed webhooks. Self-hosted, retry built-in. |
Natalia Catch the leads that signed up with bad emails — Natalia calls them back. |
Netir Hire vetted French freelance backend devs through mentored marketplace. |
|
NoBullshitConseil No-bullshit tech advisory. Founders & CTOs get straight answers. |
Qualneo Qualiopi LMS for French trainers. 32 indicators wired in, audit-ready. |
![]() Recapro Private AI that transcribes meetings & drafts reports. Sovereign hosting. |
Interested in sponsoring? Get in touch
# import using the fully qualified name.
use Fgribreau\MailChecker;
// ...
echo MailChecker::isValid('myemail@yopmail.com');
Mailchecker public API has been normalized, here are the changes:
MailChecker(email) -> MailChecker.isValid(email)MailChecker($email) -> MailChecker::isValid($email)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:
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);
}
<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>
use Fgribreau\MailChecker;
require __DIR__ . '/vendor/autoload.php';
if(!MailChecker::isValid('myemail@yopmail.com')){
die('O RLY !');
}
if(!MailChecker::isValid('myemail.com')){
die('O RLY !');
}
pip install mailchecker
# no package yet; just drop in MailChecker.py where you want to use it.
from MailChecker import MailChecker
if not MailChecker.is_valid('bla@example.com'):
print("O RLY !")
Django validator: https://github.com/jonashaag/django-indisposable
require 'mail_checker'
unless MailChecker.valid?('myemail@yopmail.com')
fail('O RLY!')
end
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"));
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
; 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!")))
package main
import (
"log"
mail_checker "github.com/FGRibreau/mailchecker/v6/platform/go"
)
if !mail_checker.IsValid("myemail@yopmail.com") {
log.Fatal("O RLY !");
}
if !mail_checker.IsValid("myemail.com") {
log.Fatal("O RLY !")
}
Go
go get github.com/FGRibreau/mailchecker/v6/platform/go
NodeJS/JavaScript
npm install mailchecker
Ruby
gem install ruby-mailchecker
PHP
composer require fgribreau/mailchecker
We accept pull-requests for other package manager.
$('td', 'table:last').map(function(){
return this.innerText;
}).toArray();
Array.prototype.slice.call(document.querySelectorAll('.entry > ul > li a')).map(function(el){return el.innerText});
... please add your own dataset to list.txt.
Just run (requires NodeJS):
npm run build
Development environment requires docker.
# install and setup every language dependencies in parallel through docker
npm install
# run every language setup in parallel through docker
npm run setup
# run every language tests in parallel through docker
npm test
These amazing people are maintaining this project:
No sponsors yet! Will you be the first?
These amazing people have contributed code to this project:
Discover how you can contribute by heading on over to the CONTRIBUTING.md file.
Unless stated otherwise all works are:
and licensed under:
Overall
Maintained
Code review
npm
Latest release
Releases this year
425 followers · starred Jun 2026
103 followers · starred Nov 2019
626 followers · starred Sep 2015
125 followers · starred Sep 2015
📫 Cross-language temporary (disposable/throwaway) email detection library. Covers 55 734+ fake email providers.
See the codeCross-language email validation. Backed by a database of over 55 000 throwable email domains.
FILTER_VALIDATE_EMAIL for PHP)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".
|
France-Nuage Sovereign French cloud for your signup pipeline. No vendor lock-in. |
![]() Hook0 Send signup events as signed webhooks. Self-hosted, retry built-in. |
Natalia Catch the leads that signed up with bad emails — Natalia calls them back. |
Netir Hire vetted French freelance backend devs through mentored marketplace. |
|
NoBullshitConseil No-bullshit tech advisory. Founders & CTOs get straight answers. |
Qualneo Qualiopi LMS for French trainers. 32 indicators wired in, audit-ready. |
![]() Recapro Private AI that transcribes meetings & drafts reports. Sovereign hosting. |
Interested in sponsoring? Get in touch
# import using the fully qualified name.
use Fgribreau\MailChecker;
// ...
echo MailChecker::isValid('myemail@yopmail.com');
Mailchecker public API has been normalized, here are the changes:
MailChecker(email) -> MailChecker.isValid(email)MailChecker($email) -> MailChecker::isValid($email)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:
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);
}
<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>
use Fgribreau\MailChecker;
require __DIR__ . '/vendor/autoload.php';
if(!MailChecker::isValid('myemail@yopmail.com')){
die('O RLY !');
}
if(!MailChecker::isValid('myemail.com')){
die('O RLY !');
}
pip install mailchecker
# no package yet; just drop in MailChecker.py where you want to use it.
from MailChecker import MailChecker
if not MailChecker.is_valid('bla@example.com'):
print("O RLY !")
Django validator: https://github.com/jonashaag/django-indisposable
require 'mail_checker'
unless MailChecker.valid?('myemail@yopmail.com')
fail('O RLY!')
end
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"));
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
; 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!")))
package main
import (
"log"
mail_checker "github.com/FGRibreau/mailchecker/v6/platform/go"
)
if !mail_checker.IsValid("myemail@yopmail.com") {
log.Fatal("O RLY !");
}
if !mail_checker.IsValid("myemail.com") {
log.Fatal("O RLY !")
}
Go
go get github.com/FGRibreau/mailchecker/v6/platform/go
NodeJS/JavaScript
npm install mailchecker
Ruby
gem install ruby-mailchecker
PHP
composer require fgribreau/mailchecker
We accept pull-requests for other package manager.
$('td', 'table:last').map(function(){
return this.innerText;
}).toArray();
Array.prototype.slice.call(document.querySelectorAll('.entry > ul > li a')).map(function(el){return el.innerText});
... please add your own dataset to list.txt.
Just run (requires NodeJS):
npm run build
Development environment requires docker.
# install and setup every language dependencies in parallel through docker
npm install
# run every language setup in parallel through docker
npm run setup
# run every language tests in parallel through docker
npm test
These amazing people are maintaining this project:
No sponsors yet! Will you be the first?
These amazing people have contributed code to this project:
Discover how you can contribute by heading on over to the CONTRIBUTING.md file.
Unless stated otherwise all works are:
and licensed under:
Overall
Maintained
Code review
npm
Latest release
Releases this year
425 followers · starred Jun 2026
103 followers · starred Nov 2019
626 followers · starred Sep 2015
125 followers · starred Sep 2015