Email Validation Tool
Real-time email validation with SMTP verification, disposable email detection, and typo correction.
π― What is Email Validation?β
Email validation verifies email addresses in real-time to ensure they're valid, deliverable, and not from disposable email services. It helps improve data quality and reduces bounce rates.
βοΈ Setup & Configurationβ
Basic Implementationβ
const validateEmail = async (email, secretKey) => {
try {
const response = await fetch('https://api.trustedaccounts.org/email/validate', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${secretKey}`
},
body: JSON.stringify({
email: email,
options: {
validateSMTP: true, // Real-time SMTP validation
validateMX: true, // Check MX records
checkDisposable: true, // Detect disposable emails
checkTypo: true // Detect typos and suggest corrections
}
})
});
const result = await response.json();
return result;
} catch (error) {
console.error('Email validation failed:', error);
return { valid: false, reason: 'Validation service unavailable' };
}
};
// Usage
validateEmail('user@example.com', 'YOUR_SECRET_KEY').then(result => {
if (result.valid) {
console.log('Email is valid:', result);
} else {
console.log('Email validation failed:', result.reason);
if (result.suggestions) {
console.log('Suggestions:', result.suggestions);
}
}
});
Advanced Configurationβ
const validateEmailAdvanced = async (email, secretKey, options = {}) => {
const defaultOptions = {
validateSMTP: true,
validateMX: true,
checkDisposable: true,
checkTypo: true,
checkRole: true, // Detect role-based emails (admin@, info@)
checkFree: true, // Detect free email providers
timeout: 10000 // 10 second timeout
};
const validationOptions = { ...defaultOptions, ...options };
try {
const response = await fetch('https://api.trustedaccounts.org/email/validate', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${secretKey}`
},
body: JSON.stringify({
email: email,
options: validationOptions
})
});
return await response.json();
} catch (error) {
console.error('Email validation failed:', error);
return { valid: false, reason: 'Validation service unavailable' };
}
};
π§ Batch Validationβ
Validate multiple emails at once for better performance:
const validateEmails = async (emails, secretKey) => {
try {
const response = await fetch('https://api.trustedaccounts.org/email/validate-batch', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${secretKey}`
},
body: JSON.stringify({
emails: emails,
options: {
validateSMTP: true,
validateMX: true,
checkDisposable: true,
checkTypo: true
}
})
});
const results = await response.json();
return results;
} catch (error) {
console.error('Batch validation failed:', error);
return { error: 'Validation service unavailable' };
}
};
// Usage
const emails = ['user1@example.com', 'user2@example.com', 'invalid@email'];
validateEmails(emails, 'YOUR_SECRET_KEY').then(results => {
results.forEach((result, index) => {
console.log(`Email ${index + 1}: ${result.valid ? 'Valid' : 'Invalid'}`);
});
});
π§ Server-Side Integrationβ
Node.js/Express Exampleβ
app.post('/api/validate-email', async (req, res) => {
const { email } = req.body;
const secretKey = process.env.TRUSTED_ACCOUNTS_SECRET_KEY;
try {
const response = await fetch('https://api.trustedaccounts.org/email/validate', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${secretKey}`
},
body: JSON.stringify({
email: email,
options: {
validateSMTP: true,
validateMX: true,
checkDisposable: true,
checkTypo: true
}
})
});
const result = await response.json();
if (result.valid) {
res.json({
valid: true,
message: 'Email is valid',
details: result
});
} else {
res.status(400).json({
valid: false,
message: 'Email validation failed',
reason: result.reason,
suggestions: result.suggestions
});
}
} catch (error) {
console.error('Email validation error:', error);
res.status(500).json({ error: 'Validation service unavailable' });
}
});
Python/Django Exampleβ
import requests
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import json
import os
@csrf_exempt
def validate_email(request):
if request.method == 'POST':
data = json.loads(request.body)
email = data.get('email')
secret_key = os.getenv('TRUSTED_ACCOUNTS_SECRET_KEY')
# Validate email
validate_url = 'https://api.trustedaccounts.org/email/validate'
validate_data = {
'email': email,
'options': {
'validateSMTP': True,
'validateMX': True,
'checkDisposable': True,
'checkTypo': True
}
}
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {secret_key}'
}
try:
response = requests.post(validate_url, json=validate_data, headers=headers)
result = response.json()
if result.get('valid'):
return JsonResponse({
'valid': True,
'message': 'Email is valid',
'details': result
})
else:
return JsonResponse({
'valid': False,
'message': 'Email validation failed',
'reason': result.get('reason'),
'suggestions': result.get('suggestions')
}, status=400)
except requests.RequestException as e:
return JsonResponse({
'error': 'Validation service unavailable'
}, status=500)
return JsonResponse({'error': 'Invalid request'}, status=400)
PHP Exampleβ
<?php
if ($_POST) {
$email = $_POST['email'];
$secret_key = getenv('TRUSTED_ACCOUNTS_SECRET_KEY');
// Validate email
$validate_url = 'https://api.trustedaccounts.org/email/validate';
$validate_data = json_encode([
'email' => $email,
'options' => [
'validateSMTP' => true,
'validateMX' => true,
'checkDisposable' => true,
'checkTypo' => true
]
]);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $validate_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $validate_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $secret_key
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code === 200) {
$result = json_decode($response, true);
if ($result['valid']) {
echo json_encode([
'valid' => true,
'message' => 'Email is valid',
'details' => $result
]);
} else {
http_response_code(400);
echo json_encode([
'valid' => false,
'message' => 'Email validation failed',
'reason' => $result['reason'],
'suggestions' => $result['suggestions']
]);
}
} else {
http_response_code(500);
echo json_encode(['error' => 'Validation service unavailable']);
}
}
?>
π Validation Resultsβ
The API returns detailed validation results:
{
"valid": true,
"email": "user@example.com",
"domain": "example.com",
"mx": {
"valid": true,
"records": ["mx1.example.com", "mx2.example.com"]
},
"smtp": {
"valid": true,
"deliverable": true,
"catchAll": false
},
"disposable": false,
"role": false,
"free": false,
"typo": false,
"suggestions": [],
"confidence": 0.95
}
π― Use Casesβ
- Form Validation: Real-time email validation in registration forms
- Lead Quality: Ensure marketing leads have valid email addresses
- Data Cleaning: Clean existing email databases
- Bounce Prevention: Reduce email bounce rates
- Fraud Detection: Identify suspicious email patterns
π Best Practicesβ
- Real-time Validation: Validate emails as users type
- User Feedback: Provide clear error messages and suggestions
- Fallback Handling: Handle API failures gracefully
- Rate Limiting: Implement appropriate rate limiting
- Caching: Cache validation results for repeated emails
π Related Toolsβ
- Phone Verification - SMS verification
- User Validation - Identity verification
- Bot Detection - Automated traffic analysis
- Browser Fingerprinting - Device identification
Ready to implement? Get your publishable key from the Developer Console and start validating emails!