Need help with mailchecker?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

FGRibreau
1.3K Stars 165 Forks MIT License 1.2K Commits 1 Opened issues

Description

:mailbox: Cross-language temporary (disposable/throwaway) email detection library. Covers 33600 fake email providers.

Services available

!
?

Need anything else?

Contributors list

# 38,535
gmail
Rust
React N...
Clojure
808 commits
# 66,349
Ruby
psql
postgre...
gtk
19 commits
# 105,559
user-ag...
browser...
Clojure
Go
18 commits
# 1,007
Python
Raspber...
hass
Perl
12 commits
# 188,012
Shell
grunt-p...
Clojure
Elixir
11 commits
# 91,933
Rails
ruby-on...
SQL
sidekiq
9 commits
# 358,913
Clojure
Go
Elixir
email-v...
8 commits
# 2,163
Python
Compose...
analysi...
streami...
8 commits
# 181
nextjs
postman...
graphql...
angular...
4 commits
# 55,320
Perl
C
Git
secp256...
3 commits
# 236,556
Clojure
Go
Elixir
email-v...
3 commits
# 5,615
jupyter
Django
fingerp...
fraud-d...
3 commits
# 320,440
HTML
Shell
Clojure
Elixir
3 commits
# 70,277
Swift
cocoapo...
Objecti...
mac
3 commits
# 50,586
PHP
rabbitm...
hadoop
SQL
3 commits
# 173,766
Clojure
Elixir
email-v...
email-v...
2 commits
# 547,895
Clojure
Go
Elixir
email-v...
2 commits
# 157,437
PHP
Sketch
sketch-...
Symfony
2 commits
# 196,831
gyrosco...
node
microso...
Redux
2 commits
# 20,034
nsq
Haskell
Svelte
postgre...
2 commits

MailChecker

Deps Downloads

NPM version npm Gem version Gem PyPi version PyPI - Downloads Packagist version Packagist Cargo version Crates.io GoDoc

Get help on Codementor available-for-advisory extra Slack

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('[email protected]'):
  # ...

became:

import MailChecker
if not MailChecker.is_valid('[email protected]'):
  # ...

MailChecker currently supports: * NodeJS (CommonJS, Instructions) * JavaScript (Client-Side, Instructions) * PHP (Instructions) * Python (Instructions) * Ruby (Instructions) * Rust (Instructions) * Elixir (Instructions) * Clojure (Instructions) * Go (Instructions) * Easily add support for your own language with MailChecker template system and send us a pull-request!


Usage

NodeJS

var MailChecker = require('mailchecker');

if(!MailChecker.isValid('[email protected]')){ console.error('O RLY !'); process.exit(1); }

if(!MailChecker.isValid('myemail.com')){ console.error('O RLY !'); process.exit(1); }

JavaScript

PHP

include __DIR__."/MailChecker/platform/php/MailChecker.php";

if(!MailChecker::isValid('[email protected]')){ die('O RLY !'); }

if(!MailChecker::isValid('myemail.com')){ die('O RLY !'); }

Python

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('[email protected]'): print "O RLY !"

Django validator: https://github.com/jonashaag/django-indisposable

Ruby

require 'mail_checker'

unless MailChecker.valid?('[email protected]') fail('O RLY!') end

Rust

 extern crate mailchecker;

assert_eq!(true, mailchecker::is_valid("[email protected]")); assert_eq!(false, mailchecker::is_valid("\[email protected]\n")); assert_eq!(false, mailchecker::is_valid("[email protected]"));

Elixir

Code.require_file("mail_checker.ex", "mailchecker/platform/elixir/")

unless MailChecker.valid?("[email protected]") 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? "[email protected]")) (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('[email protected]') { log.Fatal('O RLY !'); }

if !mail_checker.IsValid('myemail.com') { log.Fatal("O RLY !") }


Installation

Go

bash
go get https://github.com/FGRibreau/mailchecker

NodeJS/JavaScript

bash
npm install mailchecker

Ruby

bash
gem install ruby-mailchecker

PHP

bash
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.

# 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

Backers

Maintainers

These amazing people are maintaining this project:

Sponsors

No sponsors yet! Will you be the first?

Patreon donate button Gratipay donate button Flattr donate button PayPal donate button crypto donate button

Contributors

These amazing people have contributed code to this project:

Changelog

License

Unless stated otherwise all works are:

and licensed under:

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.