robust-email-validator
v1.0.1
Published
A comprehensive email validation library with format, DNS, and deliverability checking
Maintainers
Keywords
Readme
🚀 Robust Email Validator
The most comprehensive email validation library for JavaScript & TypeScript 📧✨
A lightweight, fast, and developer-friendly email validation library that provides multiple layers of validation including RFC 5322 compliance, DNS/MX record verification, and real-time deliverability checking through popular APIs.
🌟 Why Choose Robust Email Validator?
- ✅ RFC 5322 Compliant - Industry-standard email format validation
- 🌐 DNS & MX Verification - Check if domains can actually receive emails
- 📧 Deliverability Testing - Integration with ZeroBounce, Mailgun, and Hunter APIs
- 🚀 Lightning Fast - Optimized performance with minimal dependencies
- 🔧 Highly Configurable - Choose exactly which validation layers you need
- 📱 Universal Support - Works in Node.js, browsers, React, Vue, Angular
- 💪 TypeScript First - Full type safety with excellent IntelliSense
- 📊 Batch Processing - Validate thousands of emails efficiently
- 🛡️ Production Ready - Used by companies worldwide
🚀 Quick Start
Installation
```bash npm install robust-email-validator ```
Basic Usage
```javascript import { EmailValidator } from 'robust-email-validator';
// Quick format validation const isValid = EmailValidator.validateFormat('[email protected]'); console.log(isValid); // true
// Comprehensive validation const validator = new EmailValidator({ checkFormat: true, checkDNS: true, checkDeliverability: true, apiProvider: 'zerobounce', apiKey: 'your-api-key' });
const result = await validator.validate('[email protected]'); console.log(result.isValid); // true/false console.log(result.details); // Detailed validation results ```
📋 Table of Contents
- Features
- Installation
- Quick Examples
- API Reference
- Configuration
- Browser Support
- Framework Integration
- Performance
- Contributing
- License
✨ Features
🎯 Multiple Validation Layers
| Feature | Description | Node.js | Browser | |---------|-------------|---------|---------| | Format Validation | RFC 5322 compliant regex validation | ✅ | ✅ | | DNS Verification | Check if domain exists | ✅ | ❌ | | MX Record Check | Verify mail server configuration | ✅ | ❌ | | Deliverability | Real-time API validation | ✅ | ✅* |
*Subject to CORS policies
🔌 API Integrations
- ZeroBounce - Industry-leading email validation
- Mailgun - Reliable email verification service
- Hunter - Professional email finder and verifier
🛠️ Developer Experience
- Zero Configuration - Works out of the box
- Flexible Options - Enable only what you need
- Detailed Results - Comprehensive validation reports
- Error Handling - Graceful failure with detailed error messages
- TypeScript Support - Full type definitions included
📦 Installation
```bash
npm
npm install robust-email-validator
yarn
yarn add robust-email-validator
pnpm
pnpm add robust-email-validator ```
🔥 Quick Examples
Format Validation Only
```javascript import { EmailValidator } from 'robust-email-validator';
// Synchronous format checking const emails = [ '[email protected]', // ✅ Valid 'invalid-email', // ❌ Invalid '[email protected]' // ✅ Valid ];
emails.forEach(email => { const isValid = EmailValidator.validateFormat(email); console.log(`${email}: ${isValid ? '✅' : '❌'}`); }); ```
Comprehensive Validation
```javascript const validator = new EmailValidator({ checkFormat: true, checkDNS: true, checkMX: true, checkDeliverability: true, apiProvider: 'zerobounce', apiKey: process.env.ZEROBOUNCE_API_KEY, timeout: 10000 });
const result = await validator.validate('[email protected]');
console.log('Email:', result.email); console.log('Valid:', result.isValid); console.log('Errors:', result.errors); console.log('Warnings:', result.warnings);
// Detailed breakdown if (result.details.format) { console.log('Format valid:', result.details.format.isValid); } if (result.details.dns) { console.log('Domain exists:', result.details.dns.isValid); console.log('MX records:', result.details.dns.mxRecords); } if (result.details.deliverability) { console.log('Deliverable:', result.details.deliverability.isDeliverable); console.log('Confidence:', result.details.deliverability.confidence); } ```
Batch Validation
```javascript const emails = [ '[email protected]', '[email protected]', 'invalid-format-email' ];
const results = await validator.validateBatch(emails);
console.log('Summary:', results.summary); // { total: 3, valid: 1, invalid: 2, processed: 3, failed: 0 }
results.results.forEach(result => { console.log(`${result.email}: ${result.isValid ? '✅' : '❌'}`); }); ```
Browser Usage
```javascript // Browser-safe configuration const validator = new EmailValidator({ checkFormat: true, checkDeliverability: true, apiProvider: 'mailgun', apiKey: 'your-mailgun-key' });
// Use in form validation document.getElementById('email-form').addEventListener('submit', async (e) => { e.preventDefault(); const email = document.getElementById('email').value;
const result = await validator.validate(email); if (result.isValid) { // Proceed with form submission console.log('Email is valid!'); } else { // Show validation errors console.log('Errors:', result.errors); } }); ```
🔧 Configuration Options
```typescript interface EmailValidationOptions { checkFormat?: boolean; // Default: true checkDNS?: boolean; // Default: false checkMX?: boolean; // Default: false checkDeliverability?: boolean; // Default: false apiProvider?: 'zerobounce' | 'mailgun' | 'hunter'; apiKey?: string; timeout?: number; // Default: 5000ms } ```
Recommended Configurations
```javascript // Real-time form validation (fast) const formValidator = new EmailValidator({ checkFormat: true });
// Registration validation (balanced) const registrationValidator = new EmailValidator({ checkFormat: true, checkDNS: true });
// Enterprise validation (comprehensive) const enterpriseValidator = new EmailValidator({ checkFormat: true, checkDNS: true, checkMX: true, checkDeliverability: true, apiProvider: 'zerobounce', apiKey: process.env.ZEROBOUNCE_API_KEY }); ```
🌐 Framework Integration
React
```jsx import { useState } from 'react'; import { EmailValidator } from 'robust-email-validator';
function EmailInput() { const [email, setEmail] = useState(''); const [isValid, setIsValid] = useState(null);
const validateEmail = async (value) => { const result = await EmailValidator.isValid(value); setIsValid(result); };
return ( <input type="email" value={email} onChange={(e) => { setEmail(e.target.value); validateEmail(e.target.value); }} style={{ borderColor: isValid === false ? 'red' : 'green' }} /> ); } ```
Vue
```vue <input v-model="email" @input="validateEmail" :class="{ invalid: !isValid }" type="email" />
```
Angular
```typescript import { Component } from '@angular/core'; import { EmailValidator } from 'robust-email-validator';
@Component({ selector: 'app-email-input', template: ` <input [(ngModel)]="email" (input)="validateEmail()" [class.invalid]="!isValid" type="email" /> ` }) export class EmailInputComponent { email = ''; isValid: boolean | null = null;
async validateEmail() { this.isValid = await EmailValidator.isValid(this.email); } } ```
📊 Performance Benchmarks
| Operation | Time | Memory | |-----------|------|--------| | Format validation | ~0.1ms | ~1KB | | DNS validation | ~100ms | ~2KB | | API validation | ~500ms | ~3KB | | Batch (100 emails) | ~2s | ~10KB |
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Setup
```bash git clone https://github.com/otitoju/robust-email-validator.git cd robust-email-validator npm install npm test ```
📄 License
MIT © Your Name
🙏 Acknowledgments
- RFC 5322 specification
- Email validation community
- All contributors and users
⭐ Star us on GitHub • 📖 Documentation • 🐛 Report Bug • 💡 Request Feature
Made with ❤️ for the JavaScript community
