Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fgribreau/mailchecker
:mailbox: Cross-language temporary (disposable/throwaway) email detection library. Covers 55 734+ fake email providers.
https://github.com/fgribreau/mailchecker
email email-validation email-verification
Last synced: 14 days ago
JSON representation
:mailbox: Cross-language temporary (disposable/throwaway) email detection library. Covers 55 734+ fake email providers.
- Host: GitHub
- URL: https://github.com/fgribreau/mailchecker
- Owner: FGRibreau
- License: mit
- Created: 2013-03-04T15:00:30.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2024-05-18T13:48:50.000Z (6 months ago)
- Last Synced: 2024-05-19T14:04:36.295Z (6 months ago)
- Topics: email, email-validation, email-verification
- Language: PHP
- Homepage: https://twitter.com/FGRibreau
- Size: 9.63 MB
- Stars: 1,573
- Watchers: 37
- Forks: 240
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE-MIT
Awesome Lists containing this project
README
# MailChecker
[![PyPi version](https://img.shields.io/pypi/v/mailchecker.svg)](https://pypi.org/project/mailchecker/#history) ![PyPI - Downloads](https://img.shields.io/pypi/dm/mailchecker)
[![Cargo version](https://img.shields.io/crates/v/mailchecker.svg)](https://crates.io/crates/mailchecker) ![Crates.io](https://img.shields.io/crates/d/mailchecker)
[![NPM version](https://img.shields.io/npm/v/mailchecker.svg)](http://badge.fury.io/js/mailchecker) ![npm](https://img.shields.io/npm/dm/mailchecker)
[![Gem version](https://img.shields.io/gem/v/ruby-mailchecker.svg)](http://badge.fury.io/js/mailchecker) ![Gem](https://img.shields.io/gem/dt/mailchecker)
[![Packagist version](https://img.shields.io/packagist/v/fgribreau/mailchecker.svg)](https://packagist.org/packages/fgribreau/mailchecker) ![Packagist](https://img.shields.io/packagist/dm/fgribreau/mailchecker)
[![GoDoc](https://godoc.org/github.com/FGRibreau/mailchecker/platform/go?status.svg)](https://godoc.org/github.com/FGRibreau/mailchecker/platform/go)
[![Get help on Codementor](https://cdn.codementor.io/badges/get_help_github.svg)](https://www.codementor.io/francois-guillaume-ribreau?utm_source=github&utm_medium=button&utm_term=francois-guillaume-ribreau&utm_campaign=github) [![available-for-advisory](https://img.shields.io/badge/available%20for%20advising-yes-ff69b4.svg?)](http://bit.ly/2c7uFJq) ![extra](https://img.shields.io/badge/actively%20maintained-yes-ff69b4.svg?) [![Slack](https://img.shields.io/badge/Slack-Join%20our%20tech%20community-17202A?logo=slack)](https://join.slack.com/t/fgribreau/shared_invite/zt-edpjwt2t-Zh39mDUMNQ0QOr9qOj~jrg)
Cross-language email validation. Backed by a [database](./list.txt) of **over 55 000 throwable email domains**.
* Validate the format of your email (uses [validator.js](https://github.com/chriso/validator.js/blob/master/validator.js#L38) email regex underneath and `FILTER_VALIDATE_EMAIL` for PHP)
* Validate if the email is not a **temporary mail** (yopmail-like..., [add your own dataset to list.txt](./list.txt))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 provide Webhooks inside your SaaS?
- [Try Hook0, an open-source self-hostable webhook micro-service](https://www.hook0.com/)> Need to embed a charts into an email?
>
> It's over with **[Image-Charts](https://image-charts.com?gh_mailchecker)**, 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
```------------------------
# Upgrade
## From 3.x to 4.x
- PHP
```php
# import using the fully qualified name.
use Fgribreau\MailChecker;// ...
echo MailChecker::isValid('[email protected]');
```## 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```python
import MailChecker
m = MailChecker.MailChecker()
if not m.is_valid('[email protected]'):
# ...
```became:
```python
import MailChecker
if not MailChecker.is_valid('[email protected]'):
# ...
```-------------------------
MailChecker currently supports:
* [NodeJS](https://github.com/FGRibreau/mailchecker/tree/master/platform/node) (CommonJS, [Instructions](#nodejs))
* [JavaScript](https://github.com/FGRibreau/mailchecker/tree/master/platform/javascript) (Client-Side, [Instructions](#javascript))
* [PHP](https://github.com/FGRibreau/mailchecker/tree/master/platform/php) ([Instructions](#php))
* [Python](https://github.com/FGRibreau/mailchecker/tree/master/platform/python) ([Instructions](#python))
* [Ruby](https://github.com/FGRibreau/mailchecker/tree/master/platform/ruby) ([Instructions](#ruby))
* [Rust](https://github.com/FGRibreau/mailchecker/tree/master/platform/rust) ([Instructions](#rust))
* [Elixir](https://github.com/FGRibreau/mailchecker/tree/master/platform/elixir) ([Instructions](#elixir))
* [Clojure](https://github.com/FGRibreau/mailchecker/tree/master/platform/clojure) ([Instructions](#clojure))
* [Go](https://github.com/FGRibreau/mailchecker/tree/master/platform/go) ([Instructions](#go))
* **Easily add support for your own language with MailChecker template system and [send us a pull-request!](https://github.com/FGRibreau/mailchecker/fork_select)**-------------------------
## Usage### NodeJS
```javascript
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
```htmlif(!MailChecker.isValid('[email protected]')){
console.error('O RLY !');
}if(!MailChecker.isValid('myemail.com')){
console.error('O RLY !');
}```
### PHP
```php
use Fgribreau\MailChecker;
require __DIR__ . '/vendor/autoload.php';
if(!MailChecker::isValid('[email protected]')){
die('O RLY !');
}if(!MailChecker::isValid('myemail.com')){
die('O RLY !');
}
```### Python
```
pip install mailchecker
``````python
# no package yet; just drop in MailChecker.py where you want to use it.
from MailChecker import MailCheckerif not MailChecker.is_valid('[email protected]'):
print "O RLY !"
```Django validator: https://github.com/jonashaag/django-indisposable
### Ruby
```ruby
require 'mail_checker'unless MailChecker.valid?('[email protected]')
fail('O RLY!')
end
```### Rust
```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
```elixir
Code.require_file("mail_checker.ex", "mailchecker/platform/elixir/")unless MailChecker.valid?("[email protected]") do
raise "O RLY !"
endunless MailChecker.valid?("myemail.com") do
raise "O RLY !"
end
```### Clojure
```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
```go
package mainimport (
"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](http://torvpn.com/temporaryemail.html)
```javascript
$('td', 'table:last').map(function(){
return this.innerText;
}).toArray();
```[BloggingWV](http://www.bloggingwv.com/big-list-of-disposable-temporary-email-services/)
```javascript
Array.prototype.slice.call(document.querySelectorAll('.entry > ul > li a')).map(function(el){return el.innerText});
```... [please add your own dataset to list.txt](./list.txt).
Regenerate libraries from list.txt
-------------------------------Just run (requires NodeJS):
```
npm run build
```## Development
Development environment requires [docker](https://www.docker.com/).
```sh
# 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?
Contributors
These amazing people have contributed code to this project:
- Owen Stephens
- Jacob Burenstam Linder
- Herman Slatman
-
trisix — view contributions - Greenkeeper
- Dustin Clark
- Anton Zhiyanov
-
Bruel Nicolas — view contributions -
Robin — view contributions -
Spir — view contributions - Vincent Giersch
- Adrian Carolli
- Dave Powers
-
Frank Phillips — view contributions -
LuckyDino — view contributions -
ven — view contributions - Romain Gay
- Sebastian Cohnen
-
Dalai — view contributions -
quaswex — view contributions -
sxyuan — view contributions - Francois-Guillaume Ribreau
-
Dusty — view contributions - larsvegas
- Zeeshan Muhammad
-
kkleejoe — view contributions - Luiz Freneda
-
thorinisme — view contributions -
Liudas Šumskas — view contributions -
Alexander — view contributions - Alex Domakidis
- Carlos Rios
-
Jacek Bzdak — view contributions -
D — view contributions - Jonas Haag
- Alex Domakidis
-
Dan McGregor — view contributions - Thiago Rodrigues
- Dilli Labs LLC
- Kieron Lawson
- Kslr
- Lint
-
chadliu23 — view contributions - milkyklim
-
Sharat M R — view contributions -
Nicolas Perraud — view contributions -
tbdmainrepo — view contributions -
Kslr — view contributions - Fabio Caccamo
-
cyril souillard — view contributions - Grégoire Pineau
- Bruno Bossola
-
florian-crtl — view contributions - mikeyzm
- Grégoire Pineau
-
alonga — view contributions - Vitalii Tverdokhlib
-
Francis Chuang — view contributions -
mikeyzm — view contributions - Pascal Vizeli
-
Caroline — view contributions - Daniel Mihai
-
HWVS — view contributions -
seb's — view contributions - Chigusa0w0
- Maki
Discover how you can contribute by heading on over to the CONTRIBUTING.md
file.
## [Changelog](/CHANGELOG.md)
License
Unless stated otherwise all works are:
- Copyright © Francois-Guillaume Ribreau
and licensed under: