使用方法
- 在「域名」下拉框里选一个:前 4 个是保留 TLD(.test / .example / .invalid / .localhost),后 3 个是 IANA 持有的示例二级域(example.com/net/org)。默认 mailbox.test。
- 在「本地部分长度」里选 10、12、14 或 16 字符,默认 12 位,对应 72 bit 随机熵。
- 在「生成数量」里填 1 到 100 之间的整数,默认 20。填小数、0 或超过 100 都会被具体文案拦下。
- 点「生成测试邮箱」,或在数量框里按 Enter。结果表默认显示 12 行,点「加载更多」每次追加 12 行。
- 「复制全部」按制表符复制当前表格,「导出 CSV」下载带 BOM 的文件,Excel 打开中文列名不乱码。
这个虚拟邮箱生成器能解决什么
前端注册表单要验证邮箱格式正则写得对不对,需要一批「语法合法但不是真人」的样本。本页生成的每条地址都能过 local@domain 的基本格式检查,又因为域名全在 RFC 2606 保留列表里,永远不会真的投递出去,不会骚扰任何邮件服务器。
测试数据库需要批量占位邮箱(给用户表灌 100 条假数据跑分页和去重逻辑),本页一次最多 100 条,还给出每条的总长(octet),方便顺手测字段长度约束。
要区分「格式校验」和「可达性校验」两套逻辑时,本页的地址是现成的分界样本:你的系统如果对它们放行,说明只查了格式;如果直接拒收,说明接了 MX 或域名黑名单检查。
本页不做的事也要说清:它不提供可收信的临时邮箱(保留域在根区就没有 MX 记录,这是刻意设计);也不生成支付用测试卡号——虚拟邮箱和虚拟信用卡是两套完全不同的测试数据,后者请用虚拟信用卡号生成器。
原理与规则说明
虚拟邮箱生成器的本地部分由 crypto.getRandomValues 填充:每次取一个 32 位无符号整数,对 64 取余得到字符池下标。字符池是 62 个字母数字加 - 和 _ 共 64 个字符。池大小取 64 有一个特殊好处:232 = 67108864,恰好是 64 的整数倍,取模零偏差,连拒绝采样都不需要——如果池是 RFC 5322 atext 全集 81 个字符,232 % 81 = 49,直接取模会让 49 个字符各多出现一次,就得加拒绝采样循环。
字符池为什么砍掉点号、加号和其它符号:随机拼装很容易造出 a..b、.a、a.,违反 RFC 5322 §3.2.3 dot-atom 的三条硬约束(点不能开头、不能结尾、不能连续);加号在部分网关里是标签分隔符(a+b@ 会被投递到 a@),跨系统语义不稳定;引号串形式 "a b"@example.com 语法合法但被大量网关直接拒收。本页池里的 64 个字符怎么拼都不会违反 dot-atom 规则,生成的每条地址天然自洽。
长度档位 10/12/14/16 对应的随机熵是 6 bit/字符 × 长度,即 60 / 72 / 84 / 96 bit。作为对照:纯小写加数字的 36 字符池只有 5.17 bit/字符,同样 12 位只有 62 bit。生日碰撞可以忽略:最短的 10 位档地址空间约 8.07×1018,一次抽 100 条出现完全重复的概率在 10-13 量级,所以本页不做去重。
遵循的长度标准是 RFC 5321 §4.5.3.1.3:local-part 上限 64 octet,整个转发路径上限 254 octet;域名规则来自 RFC 1035 §2.3.4(每级标签 63 字符、全域名 253 字符)。本页最极端的输出是 16 位本地部分加 mailbox.localhost,共 34 octet,距 254 上限余量 220,怎么组合都合法。
域名池全部来自保留清单:.test、.example、.invalid 由 RFC 2606 §2 永久保留(ICANN 不会注册它们),.localhost 由 RFC 6761 §6 特指本机回环,example.com/net/org 由 RFC 2606 §3 指定为示例域。保留 TLD 在根区就没有 MX 记录,邮件会在 SMTP 握手阶段直接退信——「永不投递」是靠域名体系保证的,不是靠本页不发送。
完整示例(数值仅作演示)
首屏表格里 12 条是固定种子算出的演示值,本地部分 10/12/14/16 位各 3 条,域名覆盖 6 个保留域,最长的第 8 条 qxYJKOGsx_xKsf9H@mailbox.localhost 总长 34 octet。点「生成测试邮箱」后表格替换为随机批次。
自检你的邮箱正则:把这 12 条演示值喂给校验函数,应该全部通过;再把 .leading@example.com、trailing.@example.com、double..dot@example.com、has space@example.com、a@b@c 五条喂进去,应该全部拒绝。两条都符合,说明 dot-atom 规则实现正确。
熵的自查:12 位本地部分理论上 72 bit。如果你把数量拉到 100,用 new Set(结果).size 数一下,应当恰好 100——重复概率低到可以当 0 处理。
总长验证:任意一条结果的「本地部分长度 + 1 + 域名长度」都应等于表里的总长列,且不超过 254 octet(RFC 5321)。
输入范围与对照表
| 域名 | 出处 | 保留性质 | 投递行为 |
|---|---|---|---|
| mailbox.test | RFC 2606 §2 | 保留 TLD | 根区无 MX,SMTP 握手退信 |
| mailbox.example | RFC 2606 §2 | 保留 TLD | 同上 |
| mailbox.invalid | RFC 2606 §2 | 保留 TLD | 保证解析失败 |
| mailbox.localhost | RFC 6761 §6 | 本机回环 | 只在本机解析 |
| example.com | RFC 2606 §3 | IANA 示例域 | 规范要求不收信 |
| example.net | RFC 2606 §3 | IANA 示例域 | 同上 |
| example.org | RFC 2606 §3 | IANA 示例域 | 同上 |
| 本地部分长度 | 随机熵(bit) | 12 位对照熵 | 加上 @example.com 的总长 |
|---|---|---|---|
| 10 | 60 | 62(36 池)/ 72(本页 64 池) | 22 octet |
| 12 | 72 | — | 24 octet |
| 14 | 84 | — | 26 octet |
| 16 | 96 | — | 28 octet |
熵的计算口径:6 = log2(64),总熵 = 6 × 长度。对比数据来自同长度、36 字符池(小写加数字)的 5.17 bit/字符。两表合并导出 CSV 时带 BOM 头。
输入范围、边界与精度说明
数量只接受 1 到 100 的整数。空串会被单独拦下(Number('') 是 0,不能当合法值放行);小数如 20.5 会被 Number.isInteger 拒绝;0 和负数、超过 100 各有独立文案,都不会静默改成默认值。
长度只有 10/12/14/16 四档。不提供更短的档位是因为 8 位以下地址在测试库里太容易撞词(你手写的常量、日志里的截断值都会撞上);不提供更长的档位是因为 local-part 的 RFC 上限是 64 octet,再长就偏离真实约束,测试数据失真。
随机源是 crypto.getRandomValues,不是 Math.random()。后者是伪随机数,可预测且批量分布不均;本页一个字符消耗 6 bit 熵,单次 32 位取样的剩余 26 bit 直接丢弃(池 64 整除 232,丢弃不引入偏差)。页面必须在安全上下文(HTTPS 或 localhost)下才拿得到 crypto,拿不到会给出明确提示而不是悄悄换算法。
常见误用一:把生成的地址当临时邮箱收验证码。保留域没有 MX 记录,任何邮件都发不进来,这不是工具缺陷。需要真正可收信的测试邮箱,请使用邮件服务提供的测试收件箱功能。误用二:拿去注册真实账号或绕过实名——正规站点会在提交时校验 MX 或域名黑名单,直接拒绝;即便侥幸通过,也违反对方服务条款。误用三:把本页结果与虚拟信用卡号混为一谈——卡号有 Luhn 校验位算法且关联支付网关风控,邮箱地址没有任何校验位算法,两者是完全不同的测试数据。
常见问题
生成的地址能收到邮件吗?
不能,而且永远不能。域名池全部是 RFC 2606 / RFC 6761 保留域,根区没有 MX 记录,SMTP 服务器在握手阶段就会退信。「格式合法但不可投递」正是本页的设计目标。
和虚拟信用卡号生成器是什么关系?
没有关系,只是同属测试数据家族。信用卡号靠 Luhn mod 10 校验位自洽,用于支付表单测试;邮箱地址没有校验位算法,靠域名体系保证不可投递。用卡号的思路去理解邮箱,或反过来,都会得出错误结论。
为什么不能自定义域名?
自定义域名一旦是真实存在的域,地址就可能投递到真实邮箱,本页「永不骚扰真实收件人」的保证就失效了。个人域名还有到期回收风险,被他人注册后同名地址的行为完全不可控。
能用来注册网站账号吗?
不能。正规站点校验 MX 记录会直接拒绝保留域;不校验的站点也多半在条款里禁止,且你收不到任何验证邮件。绕过注册或实名验证不是本页支持也不应支持的用途。
为什么字符池里没有点号和加号?
点号受 RFC 5322 dot-atom 约束(不能开头、结尾、连续),随机拼装很容易违反;加号在部分网关是标签分隔符,跨系统语义不稳定。64 字符池怎么拼都合法,而且恰好整除 232,取模零偏差。
批量生成会重复吗?
实际不会。最短的 10 位档地址空间约 8×1018,抽 100 条出现重复的概率在 10-13 量级,本页因此不做去重表——为概率为零的事件付内存不值。
本地部分选多长合适?
12 位是默认值:72 bit 熵对任何测试场景都绰绰有余,总长 24 octet 也不逼近数据库字段上限。除非你要专门测字段长度边界,否则不用改。
生成记录会被上传或保存吗?
不会。随机数全部来自浏览器本地的 crypto API,没有任何网络请求;刷新页面后上一批结果即消失,不存在服务端存档。
相关工具
虚拟邮箱生成器只管「不可投递的测试地址」这一件事,同一族的其它测试数据各有专门页面。