You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何校验并拦截Mailinator、Yopmail类临时邮箱?

临时邮箱拦截的正则方案与优化思路

直接可用的正则表达式

针对Mailinator、Yopmail这类常见临时邮箱,你可以用下面的正则匹配域名部分,解决之前可能的匹配不全问题:

/(?:mailinator|yopmail)\.(?:com|net|org|info|me|co.uk)$/i

这个正则的核心逻辑:

  • 精准匹配两类邮箱的核心域名标识,覆盖它们常用的后缀
  • $ 锚定到域名末尾,避免部分匹配导致的误判
  • /i 忽略大小写,防止用户用MAILINATOR.COM这类形式绕过

为什么你之前的正则可能无效?

大概率是没覆盖全场景:

  • 只匹配了主域名,没考虑子域名(比如test.mailinator.com),如果要拦截子域名,可以把正则调整为 /(mailinator|yopmail)/i(注意:这种匹配可能存在极小误判风险,需权衡)
  • 未处理大小写,用户刻意用大写字母绕过校验
  • 后缀覆盖不全,比如Mailinator还有.net .info这类常用后缀

更易维护的替代方案

临时邮箱域名会不断新增,纯正则很难覆盖所有情况,建议维护一个域名列表做校验,代码更直观也更容易更新:

// 可根据需求随时添加新的临时邮箱域名
const blockedTempDomains = new Set([
  'mailinator.com',
  'mailinator.net',
  'yopmail.com',
  'yopmail.net',
  'temp-mail.org',
  '10minutemail.com'
]);

function isTempEmail(email) {
  const [, domain] = email.split('@');
  if (!domain) return false;
  return blockedTempDomains.has(domain.toLowerCase());
}

如果需要拦截子域名(比如abc.yopmail.com),可以在判断时检查域名是否包含核心标识:

function isTempEmailWithSubdomain(email) {
  const [, domain] = email.split('@');
  if (!domain) return false;
  const lowerDomain = domain.toLowerCase();
  return blockedTempDomains.has(lowerDomain) || 
         lowerDomain.includes('mailinator') || 
         lowerDomain.includes('yopmail');
}

注意事项

  • 校验前务必将邮箱转为小写,避免大小写绕过
  • 前端校验仅作友好提示,后端必须做最终拦截,防止恶意绕过
  • 定期更新临时域名列表,因为新的临时邮箱服务会持续出现

内容的提问来源于stack exchange,提问作者Mehak Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 21:10:37