
Security News
ECMAScript 2025 Finalized with Iterator Helpers, Set Methods, RegExp.escape, and More
ECMAScript 2025 introduces Iterator Helpers, Set methods, JSON modules, and more in its latest spec update approved by Ecma in June 2025.
robust-email-validator
Advanced tools
A comprehensive email validation library with format, DNS, and deliverability checking
A comprehensive, lightweight, and developer-friendly email validation library for Node.js and browser applications. This package provides multiple layers of validation including format checking, DNS verification, and deliverability testing through third-party APIs.
```bash npm install robust-email-validator ```
```typescript import { EmailValidator } from 'robust-email-validator';
// Simple format validation const isValid = EmailValidator.validateFormat('user@example.com'); console.log(isValid); // true
// Quick validation with default options const result = await EmailValidator.isValid('user@example.com'); console.log(result); // true
// Comprehensive validation const validator = new EmailValidator({ checkFormat: true, checkDNS: true, checkMX: true, checkDeliverability: true, apiProvider: 'zerobounce', apiKey: 'your-api-key' });
const validationResult = await validator.validate('user@example.com'); console.log(validationResult); ```
```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 } ```
```typescript new EmailValidator(options?: EmailValidationOptions) ```
validate(email: string): Promise Validates a single email address with comprehensive checking.
validateBatch(emails: string[]): Promise Validates multiple email addresses efficiently.
static isValid(email: string, options?: EmailValidationOptions): Promise Quick validation returning only boolean result.
static validateFormat(email: string, strict?: boolean): boolean Format-only validation (synchronous).
```typescript interface ValidationResult { email: string; isValid: boolean; errors: string[]; warnings: string[]; details: { format?: { isValid: boolean; error?: string; }; dns?: { isValid: boolean; hasARecord?: boolean; hasMXRecord?: boolean; mxRecords?: string[]; error?: string; }; deliverability?: { isValid: boolean; isDeliverable?: boolean; isDisposable?: boolean; isCatchAll?: boolean; confidence?: number; provider?: string; error?: string; }; }; } ```
```typescript import { EmailValidator } from 'robust-email-validator';
// Synchronous format checking const isValid = EmailValidator.validateFormat('user@example.com'); console.log(isValid); // true
// Strict format checking const isStrictValid = EmailValidator.validateFormat('user+tag@example.com', true); console.log(isStrictValid); // false (strict mode doesn't allow + in local part) ```
```typescript import { EmailValidator, DNSValidator } from 'robust-email-validator';
// Check domain DNS records const dnsResult = await DNSValidator.validate('example.com'); console.log(dnsResult); // { // isValid: true, // hasARecord: true, // hasMXRecord: true, // mxRecords: ['mail.example.com'] // }
// Full validation with DNS checking const validator = new EmailValidator({ checkFormat: true, checkDNS: true, checkMX: true });
const result = await validator.validate('user@example.com'); ```
```typescript const validator = new EmailValidator({ checkDeliverability: true, apiProvider: 'zerobounce', apiKey: 'your-zerobounce-api-key' });
const result = await validator.validate('user@example.com'); ```
```typescript const validator = new EmailValidator({ checkDeliverability: true, apiProvider: 'mailgun', apiKey: 'your-mailgun-api-key' }); ```
```typescript const validator = new EmailValidator({ checkDeliverability: true, apiProvider: 'hunter', apiKey: 'your-hunter-api-key' }); ```
```typescript const emails = [ 'valid@example.com', 'invalid-email', 'test@nonexistentdomain.com' ];
const batchResult = await validator.validateBatch(emails); console.log(batchResult.summary); // { // total: 3, // valid: 1, // invalid: 2, // processed: 3, // failed: 0 // } ```
```typescript // Browser-safe configuration (no DNS checks) const validator = new EmailValidator({ checkFormat: true, checkDeliverability: true, apiProvider: 'mailgun', apiKey: 'your-api-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 } else { // Show validation errors console.log(result.errors); } }); ```
The library provides detailed error information:
```typescript const result = await validator.validate('invalid@email'); if (!result.isValid) { console.log('Errors:', result.errors); console.log('Warnings:', result.warnings); } ```
Common error types:
Contributions are welcome! Please read our contributing guidelines and submit pull requests to our GitHub repository.
MIT License - see LICENSE file for details.
/examples
directory for more use cases[1.0.0] - 2024-01-XX
FAQs
A comprehensive email validation library with format, DNS, and deliverability checking
The npm package robust-email-validator receives a total of 110 weekly downloads. As such, robust-email-validator popularity was classified as not popular.
We found that robust-email-validator demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
ECMAScript 2025 introduces Iterator Helpers, Set methods, JSON modules, and more in its latest spec update approved by Ecma in June 2025.
Security News
A new Node.js homepage button linking to paid support for EOL versions has sparked a heated discussion among contributors and the wider community.
Research
North Korean threat actors linked to the Contagious Interview campaign return with 35 new malicious npm packages using a stealthy multi-stage malware loader.