@devmehq/email-validator-js

中文文档
2.10.4发布于 2025/11/20BSL 1.1TypeScriptESM + CJS近 30 天下载 8万

MX记录的高级电子邮件验证,SMTP验证,一次性电子邮件检测,分批处理和缓存. 生产准备与TypeScript支持.

中文使用文档
文档目录62 节
  1. 目录
  2. 特征
  3. 使用大小写
  4. API / 云宿服务
  5. 许可证
  6. 快速许可摘要
  7. 安装
  8. 所需资源
  9. 构建系统
  10. 快速启动
  11. API 参考
  12. 核心职能
  13. 名称检测函数
  14. 域建议函数
  15. WHOIS 职能
  16. 工具函数
  17. 类型和接口
  18. 常数
  19. 错误代码
  20. 配置选项
  21. timeout
  22. verifyMx
  23. verifySmtp
  24. checkDisposable (NEW) (英语)
  25. checkFree (NEW) (英语)
  26. detailed (NEW) (英语)
  27. retryAttempts (NEW) (英语)
  28. 实例
  29. 基本用途
  30. 详细核查(NEW)
  31. 批量验证( NEW)
  32. 名称检测( ENHANCED)
  33. 域泰波探测器( NEW)
  34. 处理不同的验证情景
  35. 使用详细核查来改进视野
  36. 大列表批处理
  37. 用缓存优化性能
  38. 无服务器部署
  39. AWS 兰布达
  40. Vercel边缘函数
  41. 云花岗工人
  42. 无服务器模式的特性
  43. 性能缓存( C)
  44. 性能提示
  45. 电子邮件提供者数据库
  46. 可处理的电子邮件提供者( QQ 总是更新)
  47. 免费电子邮件提供者( QQ 总是更新)
  48. 常见电子邮件域 (QQNEW)
  49. 测试
  50. 发展
  51. 项目结构
  52. 脚本
  53. 构建优化
  54. 捐款
  55. 如何贡献
  56. 开发设置
  57. 支助
  58. 自由主义
  59. 你什么时候需要商业执照?
  60. 快速决策指南
  61. 为什么选择我们的商业执照?
  62. 获取您的商业执照

高级电子邮件验证器

NPM version Build Status Downloads UNPKG TypeScript License

🚀 高级电子邮件验证库 用于节点.js MX 记录检查, (中文(简体) ), SMTP 核查, (中文(简体) ), 一次性电子邮件检测,以及 还要多得多现在使用 批处理, (中文(简体) ), 高级缓存,以及 详细错误报告。 。 。 .

目录

特征

QQ 检查电子邮件地址有效性

QQ 检查域名 TLD 列表中的电子邮件地址域有效性

QQ 检查电子邮件地址 MX 记录

QQ 检查电子邮件地址 SMTP 连接

请检查access-date=中的日期值 (帮助)

QQ 检查电子邮件地址免费电子邮件提供者状态

✅ 新来的: 用货币控制批次电子邮件校验

✅ 新来的: 带有错误代码的详细核查结果

✅ 新来的: 为改进性能而建造的缓存

✅ 新来的: 临时故障的自动重试机制

✅ 新来的: RFC 5321 符合规定的验证

✅ 新来的: 在综合名称支助下加强电子邮件地址的名称检测

✅ 新来的: 带有缓存的域类型检测和建议

✅ 新来的: 通过 WHOIS 查找获取域龄

✅ 新来的: 通过 WHOIS 查询获取域注册状态

✅ 新来的: 对AWS Lambda、Vercel Edge、Cloudflare Workers和更多的服务器支持

使用大小写

  • 通过去除垃圾邮件来提高电子邮件活动的传送率
  • 提高电子邮件打开率和您的IP营销声誉
  • 保护网站免受垃圾邮件、垃圾邮件和假邮件之害
  • 保护您的产品注册表免受假邮件的伤害
  • 保护您的网站表格免受假邮件的伤害
  • 用假邮件保护自己免受欺诈命令和账户的伤害
  • 将电子邮件地址验证纳入您的网站表格
  • 将电子邮件地址验证纳入您的后台管理和订单处理

API / 云宿服务

我们提供这个 email verification and validation and more advanced features 在我们的可缩放云 API 服务提供 - 您可以尝试在这里 电子邮件验证


许可证

电子邮件验证员-js根据 业务来源许可证1.1。 。 。 .

快速许可摘要

使用大小写是否需要商业执照?
为自己的研究、爱好和测试目的探索电子邮件验证程序没有
使用电子邮件验证程序建立概念证明应用程序没有
使用电子邮件验证程序建立创收应用程序对
使用电子邮件验证器-js来构建作为服务提供的软件(SaaS)对
为任何制作目的伪造电子邮件验证器对

📄 商业许可证访问 电子邮件检查.app/许可证/电子邮件验证器 或者联系我们 销售@ 电子邮件检查. app。 。 。 .


安装

通过 Yarn 安装模块 :

yarn add @devmehq/email-validator-js

或国家预防机制:

npm install @devmehq/email-validator-js

所需资源

  • 节点.js-12.0
  • TypeScript QQ 4.0 (用于 TypeScript 用户)

构建系统

  • 高效捆绑和打花树花的滚动用途
  • 以单独的CJS和无害环境管理模块优化建筑产出
  • 边缘环境的无服务器构建

快速启动

import { verifyEmail } from '@devmehq/email-validator-js';

// Basic usage
const result = await verifyEmail({
  emailAddress: '[email protected]',
  verifyMx: true,
  verifySmtp: true,
  timeout: 3000
});

console.log(result.validFormat); // true
console.log(result.validMx);     // true
console.log(result.validSmtp);   // true or false

API 参考

核心职能

verifyEmail(params: IVerifyEmailParams): Promise<IVerifyEmailResult>

具有后向兼容性的基本电子邮件验证 .

参数:

  • emailAddress (字符串,需要):电子邮件地址以验证
  • timeout (数目):超时数以毫秒计(默认:4000)
  • verifyMx (boolean):检查MX记录(默认:虚假)
  • verifySmtp (boolean):验证 SMTP 连接( 默认: 假)
  • smtpPort (数目):自定义 SMTP 端口
  • debug (boolean):启用调试记录( 默认: 假)
  • detectName (boolean):从电子邮件地址检测姓名(默认:虚假)
  • nameDetectionMethod (功能):自定义名称检测方法
  • suggestDomain (boolean):启用域打字建议(默认:虚假)
  • domainSuggestionMethod (功能):自定义域建议方法
  • commonDomains (弦 [ ] : 自定义推荐域列表

回返情况:

{
  validFormat: boolean;
  validMx: boolean | null;
  validSmtp: boolean | null;
  detectedName?: DetectedName | null;
  domainSuggestion?: DomainSuggestion | null;
}

verifyEmailDetailed(params: IVerifyEmailParams): Promise<DetailedVerificationResult>

具有详细结果和错误代码的高级验证.

补充参数:

  • checkDisposable (boolean): 检查可支配邮件( 默认: 真)
  • checkFree (boolean):检查免费电子邮件提供者( 默认: 真)
  • retryAttempts (数目):对失败的尝试重试(默认:1)
  • detectName (boolean):从电子邮件地址检测姓名(默认:虚假)
  • suggestDomain (boolean):启用域打字建议(默认:在详细模式下为真)

回返情况:

{
  valid: boolean;
  email: string;
  format: {
    valid: boolean;
    error?: VerificationErrorCode;
  };
  domain: {
    valid: boolean | null;
    mxRecords?: string[];
    error?: VerificationErrorCode;
  };
  smtp: {
    valid: boolean | null;
    error?: VerificationErrorCode;
  };
  disposable: boolean;
  freeProvider: boolean;
  detectedName?: DetectedName | null;
  domainSuggestion?: DomainSuggestion | null;
  metadata?: {
    verificationTime: number;
    cached: boolean;
  };
}

verifyEmailBatch(params: IBatchVerifyParams): Promise<BatchVerificationResult>

验证多个邮件与货币控制并行 .

参数:

  • emailAddresses (字符串 [], 需要): 用于验证的邮件组
  • concurrency (数目):并行处理限制(默认:5)
  • detailed (boolean):返回详细结果(默认:虚假)
  • detectName (boolean):从电子邮件地址检测姓名
  • suggestDomain (boolean):启用域打字建议
  • 其他参数来自 verifyEmail

回返情况:

{
  results: Map<string, DetailedVerificationResult | IVerifyEmailResult>;
  summary: {
    total: number;
    valid: number;
    invalid: number;
    errors: number;
    processingTime: number;
  };
}

名称检测函数

detectName(email: string): DetectedName | null

从电子邮件地址检测出第一个和最后一个名字 .

const name = detectName('[email protected]');
// Returns: { firstName: 'John', lastName: 'Doe', confidence: 0.9 }

检测模式 :

  • 点分隔符 : john.doe - John Doe(90%的信心)
  • 强调: jane_smith - 简·史密斯(80%的信心)
  • 连字符 : mary-johnson 玛丽·约翰逊(80%的信心)
  • 骆驼场: johnDoe - 约翰·多伊(70%的信心)
  • 复合名称数字 : mo1.test2 — Mo1 测试2(60%的置信度)
  • 混合数字数字 : user1.admin2 — 用户1 管理员2(60%的置信度)
  • 智能数字处理数字 : john.doe123 - 约翰·多伊(80%的信心)
  • 背景后缀数字 : john.doe.dev - 约翰·多伊(70%的信心)
  • 单名 : alice 爱丽丝(50%的信心)

增强特性 :

  • 删除邮件别名( +后为文本)
  • 对数字的智能处理(综合名称中的预留,去掉后缀)
  • 确认背景后缀(dev、公司、销售、年份)
  • 处理复杂的多部分名称
  • 适当名称资本化
  • 过滤常见的非名称前缀(admin,支持,信息等)

detectNameFromEmail(params: IDetectNameParams): DetectedName | null

有自定义方法支持的高级名称检测 .

const customMethod = (email: string) => {
  // Your custom logic
  return { firstName: 'Custom', lastName: 'Name', confidence: 1.0 };
};

const name = detectNameFromEmail({
  email: '[email protected]',
  customMethod: customMethod
});

参数:

  • email (字符串):电子邮件地址
  • customMethod (功能):自定义检测逻辑

defaultNameDetectionMethod(email: string): DetectedName | null

默认名称检测执行, 导出为自定义扩展 .

域建议函数

suggestEmailDomain(email: string, commonDomains?: string[]): DomainSuggestion | null

检测错误的电子邮件域并提出更正建议 .

const suggestion = suggestEmailDomain('[email protected]');
// Returns: { original: '[email protected]', suggested: '[email protected]', confidence: 0.95 }

// With custom domain list
const customDomains = ['company.com', 'enterprise.org'];
const customSuggestion = suggestEmailDomain('[email protected]', customDomains);

特征 :

  • 70+ 默认常见的电子邮件域
  • 字符串相似性算法
  • 已知类型模式(95%的置信度)
  • 基于域长的智能阈值
  • 24小时缓存以进行表演

suggestDomain(params: ISuggestDomainParams): DomainSuggestion | null

有自定义方法支持的高级域建议.

const suggestion = suggestDomain({
  domain: 'gmial.com',
  customMethod: myCustomMethod,
  commonDomains: ['company.com']
});

参数:

  • domain (字符串):要检查的领域
  • customMethod (功能):自定义建议逻辑
  • commonDomains (弦 [ ] : 自定义域列表

defaultDomainSuggestionMethod(domain: string, commonDomains?: string[]): DomainSuggestion | null

默认域建议执行, 导出为自定义扩展 .

isCommonDomain(domain: string, commonDomains?: string[]): boolean

检查一个域是否在常见域列表中 .

isCommonDomain('gmail.com'); // true
isCommonDomain('mycompany.com'); // false

// With custom list
isCommonDomain('mycompany.com', ['mycompany.com']); // true

getDomainSimilarity(domain1: string, domain2: string): number

计算两个域(0-1)之间的相似度分.

getDomainSimilarity('gmail.com', 'gmial.com'); // 0.8
getDomainSimilarity('gmail.com', 'yahoo.com'); // 0.3

WHOIS 职能

说明: WHOIS功能使用PSL(公用后缀列表)验证,以确保域名有效性后再进行查询. 没有有效 TLD 的无效域或域将返回 null。 。 。 .

getDomainAge(domain: string, timeout?: number): Promise<DomainAgeInfo | null>

通过WHOIS查询获取域龄信息.

const ageInfo = await getDomainAge('example.com');
// Returns:
// {
//   domain: 'example.com',
//   creationDate: Date,
//   ageInDays: 7890,
//   ageInYears: 21.6,
//   expirationDate: Date,
//   updatedDate: Date
// }

// Works with email addresses and URLs too
await getDomainAge('[email protected]');
await getDomainAge('https://example.com/path');

参数:

  • domain (字符串):要检查的领域、电子邮件或 URL
  • timeout (数量):超时数以毫秒计(默认:5000)

回返情况: DomainAgeInfo 对象或 null 如果搜索失败

getDomainRegistrationStatus(domain: string, timeout?: number): Promise<DomainRegistrationInfo | null>

通过WHOIS获取详细的域名注册状态.

const status = await getDomainRegistrationStatus('example.com');
// Returns:
// {
//   domain: 'example.com',
//   isRegistered: true,
//   isAvailable: false,
//   status: ['clientTransferProhibited'],
//   registrar: 'Example Registrar',
//   nameServers: ['ns1.example.com', 'ns2.example.com'],
//   expirationDate: Date,
//   isExpired: false,
//   daysUntilExpiration: 365,
//   isPendingDelete: false,
//   isLocked: true
// }

参数:

  • domain (字符串):要检查的领域、电子邮件或 URL
  • timeout (数量):超时数以毫秒计(默认:5000)

回返情况: DomainRegistrationInfo 对象或 null 如果搜索失败

特征 :

  • 支持50+TLD,配备WHOIS特定服务器
  • 为未知 TLD 自动发现 WHOIS 服务器
  • 分析WHOIS的各种响应格式
  • 用于域名验证的 PSL( 公共后缀列表)
  • 1小时结果缓存
  • 从电子邮件和 URL 提取域

工具函数

isDisposableEmail(emailOrDomain: string): boolean

检查电子邮件是否使用一次性提供者 .

isDisposableEmail('[email protected]'); // true
isDisposableEmail('tempmail.com'); // true
isDisposableEmail('gmail.com'); // false

isFreeEmail(emailOrDomain: string): boolean

检查邮件是否使用免费提供者 .

isFreeEmail('[email protected]'); // true
isFreeEmail('yahoo.com'); // true
isFreeEmail('corporate.com'); // false

isValidEmail(emailAddress: string): boolean

验证电子邮件格式(RFC 5321 兼容).

isValidEmail('[email protected]'); // true
isValidEmail('invalid.email'); // false

审定规则:

  • 正确@ 符号位置
  • 本地部分最大 64 个字符
  • 域最大253个字符
  • 无连续点
  • 无正反点
  • 有效域 TLD

isValidEmailDomain(emailOrDomain: string): boolean

验证一个域是否有有效的 TLD .

isValidEmailDomain('example.com'); // true
isValidEmailDomain('example.invalid'); // false

clearAllCaches(): void

清除所有内部缓存(包括域建议).

clearAllCaches();

类型和接口

DetectedName

interface DetectedName {
  firstName?: string;
  lastName?: string;
  confidence: number; // 0-1 scale
}

DomainSuggestion

interface DomainSuggestion {
  original: string;
  suggested: string;
  confidence: number; // 0-1 scale
}

NameDetectionMethod

type NameDetectionMethod = (email: string) => DetectedName | null;

DomainSuggestionMethod

type DomainSuggestionMethod = (domain: string) => DomainSuggestion | null;

DomainAgeInfo

interface DomainAgeInfo {
  domain: string;
  creationDate: Date;
  ageInDays: number;
  ageInYears: number;
  expirationDate: Date | null;
  updatedDate: Date | null;
}

DomainRegistrationInfo

interface DomainRegistrationInfo {
  domain: string;
  isRegistered: boolean;
  isAvailable: boolean;
  status: string[];
  registrar: string | null;
  nameServers: string[];
  expirationDate: Date | null;
  isExpired: boolean;
  daysUntilExpiration: number | null;
  isPendingDelete?: boolean;
  isLocked?: boolean;
}

常数

COMMON_EMAIL_DOMAINS

用于打字检测的 70+ 常见电子邮件域的阵列 .

import { COMMON_EMAIL_DOMAINS } from '@devmehq/email-validator-js';

console.log(COMMON_EMAIL_DOMAINS);
// ['gmail.com', 'yahoo.com', 'outlook.com', 'hotmail.com', ...]

包括:

  • 大众免费提供者(Gmail、Yahoo、Outlook等)
  • 商业电子邮件服务(Google Workspace,微软等)
  • 注重隐私的提供者(ProtonMail、Tutanota等)
  • 区域供应商(GMX、Yandex、QQ等)
  • 托管服务(GoDaddy、Namecheap等)

错误代码

enum VerificationErrorCode {
  INVALID_FORMAT = 'INVALID_FORMAT',
  INVALID_DOMAIN = 'INVALID_DOMAIN',
  NO_MX_RECORDS = 'NO_MX_RECORDS',
  SMTP_CONNECTION_FAILED = 'SMTP_CONNECTION_FAILED',
  SMTP_TIMEOUT = 'SMTP_TIMEOUT',
  MAILBOX_NOT_FOUND = 'MAILBOX_NOT_FOUND',
  MAILBOX_FULL = 'MAILBOX_FULL',
  NETWORK_ERROR = 'NETWORK_ERROR',
  DISPOSABLE_EMAIL = 'DISPOSABLE_EMAIL',
  FREE_EMAIL_PROVIDER = 'FREE_EMAIL_PROVIDER'
}

配置选项

timeout

为 smtp 连接设置以毫秒计的超时 。 默认 : 4000。 。 。 .

verifyMx

启用或禁用域检查 。 这项工作分两步进行:

  1. 验证域是否确实存在
  2. 验证域有有效的 MX 记录

默认 : false。 。 。 .

verifySmtp

启用或禁用邮箱检查 。 只有几台SMTP服务器允许这样做,即使如此,它是否有效取决于你对这些服务器的IP声誉. 这个图书馆进行最好的验证:

  • 它回来了 null 对于 Yahoo 地址, 对于失败的连接, 对于未知的 SMTP 错误
  • 它回来了 true 用于有效的 SMTP 响应
  • 它回来了 false 用于针对地址的格式或信箱存在的 SMTP 错误

默认 : false。 。 。 .

checkDisposable (NEW) (英语)

请检查access-date=中的日期值 (帮助) 电子邮件域名是否是已知的可支配电子邮件提供者 。 默认 : false。 。 。 .

checkFree (NEW) (英语)

检查电子邮件域名是否是已知的自由电子邮件提供者 。 默认 : false。 。 。 .

detailed (NEW) (英语)

返回带有错误代码的详细验证结果 。 默认 : false。 。 。 .

retryAttempts (NEW) (英语)

对瞬态失败进行重试的次数 。 默认 : 1。 。 。 .

实例

基本用途

import { verifyEmail } from '@devmehq/email-validator-js';

const { validFormat, validSmtp, validMx } = await verifyEmail({ 
  emailAddress: '[email protected]', 
  verifyMx: true, 
  verifySmtp: true, 
  timeout: 3000 
});
// validFormat: true
// validMx: true
// validSmtp: true

详细核查(NEW)

import { verifyEmailDetailed } from '@devmehq/email-validator-js';

const result = await verifyEmailDetailed({
  emailAddress: '[email protected]',
  verifyMx: true,
  verifySmtp: true,
  checkDisposable: true,
  checkFree: true
});
// result.valid: true
// result.disposable: false
// result.freeProvider: false
// result.domain.mxRecords: ['mx1.email.com', 'mx2.email.com']
// result.metadata.verificationTime: 125

批量验证( NEW)

import { verifyEmailBatch } from '@devmehq/email-validator-js';

const emails = ['[email protected]', '[email protected]', '[email protected]'];

const result = await verifyEmailBatch({
  emailAddresses: emails,
  concurrency: 5,
  verifyMx: true,
  detailed: true
});
// result.summary.valid: 2
// result.summary.invalid: 1
// result.summary.processingTime: 234

名称检测( ENHANCED)

import { detectName, verifyEmailDetailed } from '@devmehq/email-validator-js';

// Standalone name detection - now with composite name support
const name = detectName('[email protected]');
// name: { firstName: 'John', lastName: 'Doe', confidence: 0.9 }

// Handle alphanumeric composite names
const composite = detectName('[email protected]');
// composite: { firstName: 'Mo1', lastName: 'Test2', confidence: 0.6 }

// Smart handling of numbers and suffixes
const withNumbers = detectName('[email protected]');
// withNumbers: { firstName: 'John', lastName: 'Doe', confidence: 0.8 }

const withSuffix = detectName('[email protected]');
// withSuffix: { firstName: 'Jane', lastName: 'Smith', confidence: 0.7 }

// Integrated with email verification
const result = await verifyEmailDetailed({
  emailAddress: '[email protected]',
  detectName: true
});
// result.detectedName: { firstName: 'Jane', lastName: 'Smith', confidence: 0.8 }

// Custom detection method
const customMethod = (email: string) => {
  // Your custom logic here
  return { firstName: 'Custom', lastName: 'Name', confidence: 1.0 };
};

const resultCustom = await verifyEmail({
  emailAddress: '[email protected]',
  detectName: true,
  nameDetectionMethod: customMethod
});

域泰波探测器( NEW)

import { suggestEmailDomain, verifyEmailDetailed } from '@devmehq/email-validator-js';

// Standalone domain suggestion
const suggestion = suggestEmailDomain('[email protected]');
// suggestion: { original: '[email protected]', suggested: '[email protected]', confidence: 0.95 }

// Integrated with email verification (enabled by default in detailed mode)
const result = await verifyEmailDetailed({
  emailAddress: '[email protected]',
  suggestDomain: true  // Default: true for detailed verification
});
// result.domainSuggestion: { original: '[email protected]', suggested: '[email protected]', confidence: 0.9 }

// With custom domain list
const customDomains = ['company.com', 'enterprise.org'];
const resultCustom = await verifyEmail({
  emailAddress: '[email protected]',
  suggestDomain: true,
  commonDomains: customDomains
});
// resultCustom.domainSuggestion: { suggested: '[email protected]', confidence: 0.85 }

处理不同的验证情景

当一个域不存在或没有MX记录时:

const result = await verifyEmail({ 
  emailAddress: '[email protected]', 
  verifyMx: true, 
  verifySmtp: true 
});
// validFormat: true
// validMx: false
// validSmtp: null (couldn't be performed)

使用详细核查来改进视野

const detailed = await verifyEmailDetailed({
  emailAddress: '[email protected]',
  verifyMx: true,
  verifySmtp: true,
  checkDisposable: true,
  checkFree: true
});

if (!detailed.valid) {
  switch (detailed.domain.error) {
    case VerificationErrorCode.DISPOSABLE_EMAIL:
      console.log('Rejected: Disposable email');
      break;
    case VerificationErrorCode.NO_MX_RECORDS:
      console.log('Rejected: Invalid domain');
      break;
    case VerificationErrorCode.MAILBOX_NOT_FOUND:
      console.log('Rejected: Mailbox does not exist');
      break;
  }
}

大列表批处理

const emails = [
  '[email protected]',
  '[email protected]',
  '[email protected]',
  // ... hundreds more
];

const batch = await verifyEmailBatch({
  emailAddresses: emails,
  concurrency: 10, // Process 10 emails simultaneously
  verifyMx: true,
  checkDisposable: true,
  detailed: true
});

console.log(`Processed ${batch.summary.total} emails`);
console.log(`Valid: ${batch.summary.valid}`);
console.log(`Invalid: ${batch.summary.invalid}`);
console.log(`Time: ${batch.summary.processingTime}ms`);

// Filter out invalid emails
const validEmails = [];
for (const [email, result] of batch.results) {
  if (result.valid) {
    validEmails.push(email);
  }
}

用缓存优化性能

// First verification - hits DNS and SMTP
const first = await verifyEmail({ 
  emailAddress: '[email protected]',
  verifyMx: true 
});
// Takes ~500ms

// Second verification - uses cache
const second = await verifyEmail({ 
  emailAddress: '[email protected]',
  verifyMx: true 
});
// Takes ~1ms (cached)

// Clear cache if needed
clearAllCaches();

说明: Yahoo, Hotmail, 和一些供应商总是回来 validSmtp: true 因为他们不允许检查信箱.

无服务器部署

该包包括主要云平台的无服务器适配器. 无服务器执行提供没有Node.js依赖的电子邮件验证,使其适合边缘计算环境.

AWS 兰布达

import { apiGatewayHandler } from '@devmehq/email-validator-js/serverless/aws';

export const handler = apiGatewayHandler;

Vercel边缘函数

import { edgeHandler } from '@devmehq/email-validator-js/serverless/vercel';

export const config = {
  runtime: 'edge',
};

export default edgeHandler;

云花岗工人

import { workerHandler } from '@devmehq/email-validator-js/serverless/cloudflare';

export default {
  async fetch(request, env, ctx) {
    return workerHandler(request, env, ctx);
  },
};

无服务器模式的特性

  • 语法验证
  • Typo 检测和域建议
  • * ** 可处理的电子邮件检测(完整的数据库)
  • * 免费电子邮件提供者检测(完整的数据库)
  • 批量处理
  • 内置缓存
  • MX记录验证( 需要 DNS)
  • SMTP 校验( 需要 TCP 套接字)

关于详细的无服务器文档和更多平台实例,参见 文件/服务。 。 。 .

性能缓存( C)

图书馆包括智能缓存以提高性能:

缓存类型TTL 电话说明
MX 记录1小时DNS MX 记录查看
可处理24小时可处理的电子邮件检查
免费提供者24小时免费电子邮件提供者检查
域有效性24小时域验证结果
SMTP 软件30分钟SMTP 核查结果
域建议24小时域类型建议

性能提示

  1. 使用批处理: 对于多个电子邮件,使用 verifyEmailBatch() 用于平行处理
  2. 启用缓存: 缓存是自动的, 重复检查减少~90%
  3. 调整超时: 较快反应的超时,准确性较高
  4. 跳过 SMTP: 如果您只需要格式/ MX 验证, 请跳过 SMTP 以获得更快的结果
  5. 域建议: 缓存24小时以避免重新计算相似性分数
  6. 名称检测: 性能影响最小的轻量级操作

电子邮件提供者数据库

可处理的电子邮件提供者( QQ 总是更新)

查看列表 - 5 000多个一次性电子邮件域

免费电子邮件提供者( QQ 总是更新)

查看列表 - 1 000+免费电子邮件提供者

常见电子邮件域 (QQNEW)

访问用于打字检测的 70+ 常见电子邮件域列表 :

import { COMMON_EMAIL_DOMAINS } from '@devmehq/email-validator-js';

console.log(COMMON_EMAIL_DOMAINS);
// ['gmail.com', 'yahoo.com', 'outlook.com', 'hotmail.com', ...]

// Use with your own domain validation
const isCommon = COMMON_EMAIL_DOMAINS.includes('gmail.com'); // true

测试

运行测试套件 :

yarn test

覆盖运行 :

yarn test --coverage

打开代码 :

yarn lint
yarn lint-fix  # Auto-fix issues

构建工程 :

yarn build

发展

项目结构

email-validator-js/
├── src/                 # Source code
│   ├── index.ts        # Main entry point
│   ├── smtp.ts         # SMTP verification
│   ├── dns.ts          # DNS/MX lookups
│   ├── validator.ts    # Format validation
│   ├── cache.ts        # Caching system
│   ├── batch.ts        # Batch processing
│   └── types.ts        # TypeScript types
├── __tests__/          # Test files
├── examples/           # Usage examples
└── dist/              # Compiled output

脚本

yarn build      # Build TypeScript with Rollup
yarn test       # Run tests with Jest
yarn lint       # Run ESLint
yarn lint-fix   # Fix ESLint issues
yarn typecheck  # Run TypeScript type checking

构建优化

  • 类型安全: 改进型推论减少冗余型声明
  • 套装大小: 以震树和微音优化
  • 业绩: 加快与平行汇编的构建
  • 代码质量: 有全面类型检查的严格类型脚本模式

捐款

我们欢迎捐款! 请随意打开一个问题或创建拉出请求并修正错误或添加特性. 欢迎所有的贡献!

如何贡献

  1. 叉子存储器
  2. 创建特性分支( E)git checkout -b feature/amazing-feature(中文(简体) )
  3. 提交更改( E)git commit -m 'Add amazing feature'(中文(简体) )
  4. 推向分行(git push origin feature/amazing-feature(中文(简体) )
  5. 打开拉请求

开发设置

# Clone the repo
git clone https://github.com/devmehq/email-validator-js.git
cd email-validator-js

# Install dependencies
yarn install

# Run tests
yarn test

# Build
yarn build

支助

关于问题、问题或商业许可:

🐛 打开一个问题 📧 电子邮件支持 📄 商业许可证 🌐 访问电子邮件检查. app

自由主义

业务来源许可证1.1 - 见 自由主义 详细文件.

你什么时候需要商业执照?

BSL只允许用于非生产目的. 这是一份综合指南,帮助你理解 当你需要商业许可证:

使用大小写需要商业执照吗?细节
个人学习( L)
探索用于研究或学习的电子邮件验证器-js✅ 没有为教育目的自由使用
个人爱好项目(非商业性)✅ 没有建立个人工具和实验
* 开发环境中的测试和评价✅ 没有在购买前测试所有特性
开发和原型制作
建立概念证明应用程序✅ 没有创建演示和原型
* * 内部工具(不是介绍客户)✅ 没有内部开发工具的使用
* 开源项目(非商业性)✅ 没有对社区的贡献
商业和生产用途
创收应用程序❌ 对任何能产生收入的应用程序
作为服务(SaaS)产品的软件❌ 对基于云的服务
分发的商业软件❌ 对出售给客户的软件
企业生产系统❌ 对业务关键应用程序
用于商业目的的伪造❌ 对创造衍生商品
* 任何形式的生产用途❌ 对服务于真实用户的直播系统
具体设想
* 学生项目和课程✅ 没有鼓励学术使用
* CI/CD管道(用于商业产品)❌ 对商业发展的一部分
生产 API 中的电子邮件验证❌ 对生产服务使用情况
电子商务结账验证❌ 对与收入有关的审定
QQ 移动应用程序(免费的广告或付费)❌ 对货币化应用

快速决策指南

问自己这些问题:

  1. 真正的用户在制作中会与之互动吗? 你需要执照
  2. 这有助于创造收入吗? 你需要执照
  3. 这是学习还是测试? • 不需要许可证
  4. 这是内部原型还是POC? • 不需要许可证

为什么选择我们的商业执照?

✨ 无限使用 - 在所有生产应用中使用
🚀 优先支助 - 我们工程队的直接支助
🔄 常规更新 - 获得最新特点和改进
🛡️ 法律保护 - 充分的商业权利和担保
🏢 企业准备 - 适用于大规模部署

获取您的商业执照

准备好在制作时使用电子邮件验证器了吗?

🛍️ 购买许可证 - 简单定价,即时激活
📧 联系人销售 - 企业或定制需求

版本与发布记录

@devmehq/email-validator-js 共发布 320 个版本,首次发布于 2021/12/23;过去 12 个月发布了 5 个版本。

版本发布日期距今
2.10.4latest2025/11/2011 个月前
2.10.3-beta.28develop2025/11/2011 个月前
2.10.32025/11/1511 个月前
2.10.3-beta.272025/11/1511 个月前
2.10.3-beta.262025/11/1211 个月前
2.10.3-beta.252025/11/111 年前

关于 @devmehq/email-validator-js 的常见问题

@devmehq/email-validator-js 是什么?

MX记录的高级电子邮件验证,SMTP验证,一次性电子邮件检测,分批处理和缓存. 生产准备与TypeScript支持.

如何安装 @devmehq/email-validator-js?

在项目目录运行 npm install @devmehq/email-validator-js,或使用 pnpm add / yarn add / bun add。

@devmehq/email-validator-js 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@devmehq/email-validator-js 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@devmehq/email-validator-js 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 12.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@devmehq/email-validator-js 可以商用吗?

@devmehq/email-validator-js 使用 BSL 1.1 许可。声明的许可为 BSL 1.1,请阅读许可原文确认使用条件。以上为概括,不构成法律意见,请以许可原文为准。

@devmehq/email-validator-js 的下载量有多少?

根据 npm 官方下载统计,@devmehq/email-validator-js 在 2026/10/12 – 2026/11/10 这 30 天内被下载 80,330 次,日均约 2,678 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@devmehq/email-validator-js 还在维护吗?

最新版本 2.10.4 发布于 2025/11/20(11 个月前);至今共发布 320 个版本,其中过去 12 个月发布了 5 个;首次发布于 2021/12/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。